WebConfig:使用@bean或方法方式?



我知道我可以这样在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它有一些方法可以让生活更轻松,比如你应该使用jspfreeMarker

所以正确的用法是

Override
public void configureViewResolvers(ViewResolverRegistry registry) {
registry.jsp("/WEB-INF/pages/", ".jsp");
}

和免费标记

public void configureViewResolvers(ViewResolverRegistry registry) {
registry.freeMarker(); 
}
@Bean
public FreeMarkerConfigurer freemarkerConfig() {
FreeMarkerConfigurer config = new FreeMarkerConfigurer();
config.setTemplateLoaderPath("/WEB-INF/pages/");
return config;
}

您仍然需要FreeMarkerConfigurer来引导和配置 FreeMarker。

相关内容

最新更新