下面是我的课中,我不得不同时使用@Configuration,并@Controller作为应该只有一个实例Thymeleaf在整个应用程序一样,我得到的例外。我的其他类被注释,@RequestScope所以我不能使用单例作用域 bean。所以我混合了配置和控制器来得到结果,但我觉得这是一个不好的做法。我将不胜感激任何重构代码和消除不良做法的帮助。
更新
我正在使用spring-boot 1.5.14. 我使用以下方法来处理模板并将处理后的模板保留为字符串。
@Controller
@Configuration
@EnableWebMvc
@ApplicationScope
public class MyThymeleafConfig {
@GetMapping("/view-template")
@ResponseBody
public void viewTemplates() {
Context context = new Context();
context.setVariable("mydata", "this is it");
String html = templateEngine().process("templates/view-to-process.html", context);
System.out.println(html);
}
/*
configuration for thymeleaf and template processing
*/
@Bean
public SpringTemplateEngine templateEngine() {
SpringTemplateEngine templateEngine = new SpringTemplateEngine();
templateEngine.setTemplateResolver(thymeleafTemplateResolver());
return templateEngine;
}
@Bean
public SpringResourceTemplateResolver thymeleafTemplateResolver() {
SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver();
templateResolver.setPrefix("classpath:");
templateResolver.setSuffix(".html");
templateResolver.setCacheable(false);
templateResolver.setTemplateMode(TemplateMode.HTML);
return templateResolver;
}
@Bean
public ThymeleafViewResolver thymeleafViewResolver() {
ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
viewResolver.setTemplateEngine(templateEngine());
return viewResolver;
}
}
要提供静态资源,请使用以下配置:
@Configuration
@EnableWebMvc
public class StaticResourceConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry
.addResourceHandler("/**")
.addResourceLocations("/static/", "classpath:static/");
}
}
更新
我还提到了我不能接受下面提到的答案的原因,因为我的其他类有请求范围。
撒科打诨
阿波罗的战车
相关分类