18.0、springboot-扩展springMVC
Springboot官方说如果你想扩展这个类你需要加上@Configuration这个注释,必须是webMvcConfigurer这个类,并且绝对不能加上@EnableWebMvc这个注释否者自动装配直接失效。
我们来分析一下@EnableWebMvc这个注释,点进去可以看到@Import(DelegatingWebMvcConfiguration.class)这行代码,意思是导入了这个类,再往里面点一下可以看到DelegatingWebMvcConfiguration这个类继承了WebMvcConfigurationSupport类
然后我们再去WebMvcAutoConfiguration.java这个类里看一下,可以看到EnableWebMvcConfiguration这个类继承了DelegatingWebMvcConfiguration这个类,而这个类就是我们之前看到的@EnableWebMvc这个注解所导入的类
我们可以在WebMvcAutoConfiguration这个类的开头看到一个注解@ConditionalOnMissingBean({WebMvcConfigurationSupport.class})这个注解表示如果出现WebMvcConfigurationSupport这个类那么自动装配将失效,因为在@EnableWebMvc中EnableWebMvcConfiguration这个类继承了DelegatingWebMvcConfiguration这个类所以不能加这个注解否者会使WebMvcAutoConfiguration自动装配失效
在springboot中,有非常多的xxxx Configuration 这些类是用来帮助我们进行扩展配置的,只要看见了这个东西,我们就要注意了!因为他一定是改变了springboot一些原有的东西或者扩展了