我不喜欢XML配置(那些大而难以阅读的文件),我更喜欢使用java代码而不是它们。我正在使用一个基于Spring(Core,MVC)和Thymeleaf作为模板引擎的简单Web项目。
代码片段如下所示。
@EnableWebMvc
@Configuration
@ComponentScan({"com.github.tobilko"})
public class DependencyConfiguration {
@Bean(name = "templateResolver")
public ServletContextTemplateResolver getTemplateResolver() {
ServletContextTemplateResolver resolver = new ServletContextTemplateResolver();
resolver.setPrefix("/WEB-INF/templates/");
resolver.setSuffix(".html");
resolver.setTemplateMode("HTML5");
return resolver;
}
@Bean(name = "templateEngine")
public SpringTemplateEngine getTemplateEngine() {
SpringTemplateEngine engine = new SpringTemplateEngine();
engine.setTemplateResolver(/*?*/);
return engine;
}
}
我对我注意到/*?*/
的地方很感兴趣。我想引用templateResolver
bean。 我必须在这里粘贴什么?如何引用尚未存在的bean?
XML文件中的示例bean配置:
<bean id="templateResolver"
class="org.thymeleaf.templateresolver.ServletContextTemplateResolver">
<property name="prefix" value="/WEB-INF/templates/" />
<property name="suffix" value=".html" />
<property name="templateMode" value="HTML5" />
</bean>
<bean id="templateEngine"
class="org.thymeleaf.spring4.SpringTemplateEngine">
<property name="templateResolver" ref="templateResolver" />
</bean>
以下代码
engine.setTemplateResolver(
(ITemplateResolver)
new AnnotationConfigApplicationContext().getBean("templateResolver")
);
抛出java.lang.IllegalStateException
:
上下文尚未刷新
答案 0 :(得分:2)
使用此:
public SpringTemplateEngine getTemplateEngine(ServletContextTemplateResolver templateResolver) {
您可以将已定义的bean注入使用@Bean
注释的方法,也可以在getTemplateResolver()
内调用getTemplateEngine()
。