我目前正在建立與Thymeleaf一個Spring MVC的項目setApplicationContext,在下面的教程:http://www.thymeleaf.org/doc/tutorials/3.0/thymeleafspring.html#spring-mvc-configuration如何避免調用一個春天
想去吻的代碼,我先被替換implements ApplicationContextAware
與@Inject private ApplicationContext applicationContext
setter方法。 但我不明白爲什麼我必須在SpringResourceTemplateResolver
上調用setApplicationContext()
,而它繼承了Spring接口ApplicationContextAware
。
如何避免這種情況?
編輯: 如果我刪除了templateResolver.setApplicationContext(applicationContext);
行,我訪問根時得到此異常:
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)
注:我用的是最新版本:春天4.3.3.RELEASE和Thymeleaf 3.0.2。 RELEASE(當然我輸入thymeleaf-spring4
)。
這只是一個建議,並沒有回答你的問題:你可以嘗試使用Spring Boot和http://start.spring.io/,它會生成一個可以使用並預先配置Thymeleaf和Spring MVC的項目。 – kamwo
您不需要,也不需要注入上下文。春天會照顧它。 –
感謝您的建議@kamwo,我知道所有Spring Boot自動生成的項目。但我想完全理解Spring Java配置如何工作,因爲我幾乎總是遇到基於XML的配置項目(傳統項目...)。以及由我自己組織整個項目和依賴項。 – maxxyme