If you want to take complete control of Spring MVC, you can add your own
@Configuration
annotated with@EnableWebMvc
.
springboot自动配置了mvc相关配置,如果我们想自己配置,只需要在配置类@Configuration上面添加@EnableWebMvc注解即可-----摘自springoot官方文档
实现原理
启用@EnableWebMvc
之后,所有的SpringMVC的自动配置都失效了,为什么会失效呢
我们进入这个注解:
1).@EnableWebMvc
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
@Documented
@Import({DelegatingWebMvcConfiguration.class})
public @interface EnableWebMvc {
}
2).@Import({DelegatingWebMvcConfiguration.class})
@Configuration
public class DelegatingWebMvcConfiguration extends WebMvcConfigurationSupport {
3).回顾WebMvcAutoConfiguration
@Configuration
@ConditionalOnWebApplication
@ConditionalOnClass({ Servlet.class, DispatcherServlet.class,
WebMvcConfigurerAdapter.class })
//容器中没有这个组件的时候,这个自动配置类才生效
@ConditionalOnMissingBean(WebMvcConfigurationSupport.class)
@AutoConfigureOrder(Ordered.HIGHEST_PRECEDENCE + 10)
@AutoConfigureAfter({ DispatcherServletAutoConfiguration.class,
ValidationAutoConfiguration.class })
public class WebMvcAutoConfiguration {
@ConditionalOnMissingBean(WebMvcConfigurationSupport.class) 注意这句话,容器中没有这个组件的时候,这个自动配置类才生效
4)、@EnableWebMvc
将WebMvcConfigurationSupport
组件导入进来;那么这个配置类就失效了
5)、导入的WebMvcConfigurationSupport
只是SpringMVC最基本的功能;