我知道我可以这样在 webConfig 类中编写:
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
InternalResourceViewResolver viewResolver=new InternalResourceViewResolver();
viewResolver.setPrefix("/WEB-INF/pages/");
viewResolver.setSuffix(".jsp");
registry.viewResolver(viewResolver);
}
但同时 - 我可以用另一种方式写:
@Bean(name = "viewResolver")
public ViewResolver getViewResolver() {
InternalResourceViewResolver viewResolver=new InternalResourceViewResolver();
viewResolver.setPrefix("/WEB-INF/pages/");
viewResolver.setSuffix(".jsp");
return viewResolver;
}
哪种方式更好?
为什么我不能为 freemarker 做第一种方法,但可以做第二种:
正确的是:
@Bean(name = "viewResolver")
public ViewResolver getViewResolver() {
FreeMarkerViewResolver viewResolver = new FreeMarkerViewResolver();
viewResolver.setPrefix("");
viewResolver.setSuffix(".ftl");
return viewResolver;
}
@Bean(name = "freemarkerConfig")
public FreeMarkerConfigurer getFreemarkerConfig() {
FreeMarkerConfigurer config = new FreeMarkerConfigurer();
config.setTemplateLoaderPath("/WEB-INF/pages/");
return config;
}
我无法编写方法,因为我不知道 FreeMarkerConfigurer 和 FreeMarkerViewResolver 如何交互...
最佳答案
基本上,您的第二种用法不是您应该如何使用ViewResolverRegistry
,它有一些方法可以让生活更轻松,例如jsp
或freeMarker
,其中你应该使用。
所以正确的使用是
Override
public void configureViewResolvers(ViewResolverRegistry registry) {
registry.jsp("/WEB-INF/pages/", ".jsp");
}
对于 FreeMarker
public void configureViewResolvers(ViewResolverRegistry registry) {
registry.freeMarker();
}
@Bean
public FreeMarkerConfigurer freemarkerConfig() {
FreeMarkerConfigurer config = new FreeMarkerConfigurer();
config.setTemplateLoaderPath("/WEB-INF/pages/");
return config;
}
您仍然需要 FreeMarkerConfigurer
来引导和配置 FreeMarker。
关于java - 网络配置 : use @bean or method way?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62135198/