开始写项目前,我还需要搞清楚Springboot对我们的spring MVC还做了哪些配置,包括如何扩展,如何自定义。
我们把这个搞清楚,对以后上手项目才能够得心应手。
下面我们通过看源码以及看官方文档来分析一下。
官方网站 直接点进去定位到Springmvc自动配置这一块
我们在ssm项目扩展springmvc的时候,需要在springmvc.xml配置文件中配置视图解析器和拦截器已达到扩展的目的,而在springboot中自定义配置类来实现springmvc的扩展功能,上面是Springboot帮助我们自动配置好的一些功能。
但是有些场景不适合用springboot中内置的mvc的配置,因此需要我们在springboot中自定义配置类来实现springmvc的扩展功能。
SpringBoot在自动配置很多组件的时候,先看容器中有没有用户自己配置的(如果用户自己配置@bean),如果有就用用户配置的,如果没有就用自动配置的;
根据java8的特性,接口不需要实现类重写接口中的全部方法。因此我们只需实现WebMvcConfigurer接口,加上@Configuration注解。实现指定方法,完善内容即可。
但是官方文件也明确指明不能加上@EnableWebMvc注解
为什么呢?
我们点进去EnableWebMvc注解,发现引入了一个DelegatingWebMvcConfiguration类
我继续点进去,发现他继承了WebMvcConfigurationSupport类,也就是说他属于WebMvcConfigurationSupport这个类。
那么下面我们打开WebMvcAutoConfiguration这个类,看到上面有一个注解@ConditionalOnMissingBean(WebMvcConfigurationSupport.class)
说明只有引入这个类就自动配置就失效了。
所以,当加入这个注解的时候就全面接管springmvc了,所有配置都需要自己来配置了。