Весенний пользовательский диалект Thymeleaf - Autowire TemplateEngine - PullRequest
0 голосов
/ 04 декабря 2018

Я сделал собственный диалект 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.

Что я не так делаю?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...