Spring自定义Thymeleaf方言-Autowire TemplateEngine

时间:2018-12-04 09:00:52

标签: java spring spring-mvc spring-boot thymeleaf

我在Spring Boot 2应用程序中制作了一个自定义的Thymeleaf方言。该方言包含各种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;

其中WebConfig中的SpringTemplateEngine定义为:

@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

我怎么了?

0 个答案:

没有答案