Я сделал собственный диалект Thymeleaf в своем приложении Spring Boot 2.Диалект содержит различные TagProcessors
.Каждый TagProcessor
расширяет абстрактный BaseTagprocessor
, который расширяет AbstractElementTagProcessor
.
Основная часть BaseTagProcessor
:
public abstract class BaseTagProcessor extends AbstractElementTagProcessor {
...
@Override
protected void doProcess(ITemplateContext context, IProcessableElementTag tag, IElementTagStructureHandler structureHandler) {
ITemplateResolver resolver = getTemplateResolver();
TemplateEngine templateEngine = new TemplateEngine();
templateEngine.setTemplateResolver(resolver);
Context templateContext = getContext(context, tag);
String processedTemplate = templateEngine.process("component/form/" + getTemplateName(), templateContext);
...
}
...
}
Моя проблема с этим кодом в том, что онсоздает новый TemplateEngine
каждый раз, поэтому я хотел бы использовать @Autowire
.Однако, если я добавлю это:
@Autowired
protected SpringTemplateEngine te;
, где SpringTemplateEngine
в WebConfig определен как:
@Bean
public SpringTemplateEngine templateEngine(){
SpringTemplateEngine templateEngine = new SpringTemplateEngine();
templateEngine.setTemplateResolver(getTemplateResolver());
templateEngine.addDialect(layoutDialect());
templateEngine.addDialect(formBuilderDialect());
return templateEngine;
}
А также добавьте аннотацию @Component
к моей BaseTagProcessor
:
@Component
public abstract class BaseTagProcessor extends AbstractElementTagProcessor {
Двигатель с автоматическим подключением все еще null
.
Что я не так делаю?