简体   繁体   English

如何避免在 SpringResourceTemplateResolver 上调用 setApplicationContext?

[英]How avoid calling setApplicationContext on a SpringResourceTemplateResolver?

I'm currently setting up a Spring MVC project with Thymeleaf, following the tutorial at: http://www.thymeleaf.org/doc/tutorials/3.0/thymeleafspring.html#spring-mvc-configuration我目前正在使用 Thymeleaf 建立一个 Spring MVC 项目,遵循以下教程: http : //www.thymeleaf.org/doc/tutorials/3.0/thymeleafspring.html#spring-mvc-configuration

Trying to KISS the code, I first replaced implements ApplicationContextAware and the setter method with @Inject private ApplicationContext applicationContext .尝试 KISS 代码,我首先用@Inject private ApplicationContext applicationContext替换了implements ApplicationContextAware和 setter 方法。 But I don't understand why I have to call setApplicationContext() on the SpringResourceTemplateResolver while it inherits the Spring interface ApplicationContextAware .但我不明白为什么我要叫setApplicationContext()SpringResourceTemplateResolver同时它继承了Spring的接口ApplicationContextAware

How to avoid this?如何避免这种情况?

Edit: If I remove the templateResolver.setApplicationContext(applicationContext);编辑:如果我删除templateResolver.setApplicationContext(applicationContext); line, I get this exception when accessing the root:行,我在访问根时遇到此异常:

java.lang.IllegalArgumentException: Application Context cannot be null
    org.thymeleaf.util.Validate.notNull(Validate.java:37)
    org.thymeleaf.spring4.templateresource.SpringResourceTemplateResource.<init>(SpringResourceTemplateResource.java:64)
    org.thymeleaf.spring4.templateresolver.SpringResourceTemplateResolver.computeTemplateResource(SpringResourceTemplateResolver.java:69)
    org.thymeleaf.templateresolver.AbstractConfigurableTemplateResolver.computeTemplateResource(AbstractConfigurableTemplateResolver.java:1221)
    org.thymeleaf.templateresolver.AbstractTemplateResolver.resolveTemplate(AbstractTemplateResolver.java:356)
    org.thymeleaf.engine.TemplateManager.resolveTemplate(TemplateManager.java:840)
    org.thymeleaf.engine.TemplateManager.parseAndProcess(TemplateManager.java:608)
    org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1087)
    org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1061)
    org.thymeleaf.spring4.view.ThymeleafView.renderFragment(ThymeleafView.java:335)
    org.thymeleaf.spring4.view.ThymeleafView.render(ThymeleafView.java:189)
    org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1257)
    org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1037)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:980)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

Note: I use the latest versions: Spring 4.3.3.RELEASE and Thymeleaf 3.0.2.RELEASE (of course I imported thymeleaf-spring4 ).注意:我使用最新版本:Spring 4.3.3.RELEASE 和 Thymeleaf 3.0.2.RELEASE(当然我导入了thymeleaf-spring4 )。

重新检查我遗漏的内容后,似乎缺少@Configuration注释是 Spring 没有将ApplicationContext注入SpringResourceTemplateResolver

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM