我正在学习Java配置的Spring MVC(无xml),并且有一个简单的问题。我看到两种配置Spring bean的方法:
方法1:
@Configuration
@EnableWebMvc
@ComponentScan(basePackages="com.demo.springmvc")
public class DemoAppConfig {
// define a bean for ViewResolver
@Bean
public ViewResolver viewResolver() {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setPrefix("/WEB-INF/view/");
viewResolver.setSuffix(".jsp");
return viewResolver;
}
}
方法2:
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.example")
public class SpringConfig implements WebMvcConfigurer{
@Bean
public ViewResolver viewResolver() {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setViewClass(JstlView.class);
viewResolver.setPrefix("/WEB-INF/pages/");
viewResolver.setSuffix(".jsp");
return viewResolver;
}
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
}
因此,一种方法是通过实现WebMvcConfigurer接口,而另一种方法是不实现WebMvcConfigurer接口。我想问你有什么区别?当我实现此接口时会发生什么,而当我不实现它时会发生什么。任何反馈将不胜感激。
答案 0 :(得分:0)
实施 WebMvcConfigurer 可让您配置Spring MVC配置。对于所有未实现的方法,都使用默认值。
对于@Bean public ViewResolver viewResolver()
而言,此bean定义的位置实际上根本与此类无关,可以放置在Spring扫描bean的任何位置。该指南可能有点令人困惑,并给人留下这样的印象,即这两件事之间存在某种联系。