- 1.回顾
- 2.@EnableWebMvc + WebMvcConfigurer接口的使用原理
- 3.总结
根据之前的文章, 之前自定义的组件放入了容器中, 但是DispatcherServlet会使用自定义的组件而放弃了默认组件, 导致很多功能都失效了。
所以@EnableWebMvc + WebMvcConfigurer就是解决这个问题的
@ComponentScan(value = "com.atguigu", includeFilters = {
@ComponentScan.Filter(type = FilterType.ANNOTATION, classes = {Controller.class})
}, useDefaultFilters = false)
@EnableWebMvc// 开启注解驱动
public class WebAppConfig implements WebMvcConfigurer {
// 视图控制器
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("index");
}
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
}
}
2.@EnableWebMvc + WebMvcConfigurer接口的使用原理
@EnableWebMvc会给容器导入9大组件, 而且留了个入口WebMvcConfigurer可以定制化
添加链接描述SpringBoot 源码分析 (@Enablexxx注解编程模型分析) (五)
由之前的文章SpringBoot的注解@EnabelXxx 导入的是3种类型
而这种是XxxConfiguration
拿到容器中所有的WebMvcConfigurer
下面的方法都是通过上面从容器中拿到的WebMvcConfigurer功能定制调用的。
因为引入了XxxConfiguration继承了XxxSupport.
所以会引入XxxSuport
这个父类会自己引入自己的9大组件, 并且会留一个接口给子类引入
通过以上的原理讲解, 可以得到@EnableWebMvc + WebMvcConfigurer的功能不仅可以自己使用自己的9大组件, 也可留一个接口给自定义。
相当于扩展了自己的功能。



