所谓的@EnableWebMvc全面接管SpringMVC的自动配置,是指@EnableWebMvc注解会使SpringMVC的自动配置失效,原理如下:

1、查看@EnableWebMvc的源码,如下图:

0011SpringBoot的@EnableWebMvc全面接管SpringMVC的自动配置(源码)-LMLPHP

即导入了DelegatingWebMvcConfiguration.class类,查看该类的源码,如下图:

  0011SpringBoot的@EnableWebMvc全面接管SpringMVC的自动配置(源码)-LMLPHP

即导入的类继承自WebMvcConfigurationSupport类,所以也理解为导入了WebMvcConfigurationSupport类

2、查看SpringMVC的自动配置类WebMvcAutoConfiguration,内容如下图:

0011SpringBoot的@EnableWebMvc全面接管SpringMVC的自动配置(源码)-LMLPHP

即SpringMVC的自动配置类生效的一个前提条件是容器中不能含有WebMvcConfigurationSupport.class类;

而我们在步骤1中讲到,当使用@EnableWebMvc注解的时候,会向容器中导入WebMvcConfigurationSupport类,

所以会导致SpringMVC的自动配置失效。

理解不到之处,望指正。

05-11 08:11