今天看项目的代码的时候发现了一个有趣的事情,一个为了解决跨域问题的配置类
//@Configuration
public class CorsConfigure extends WebMvcConfigurationSupport
我发现继承的是
WebMvcConfigurationSupport,然后我看网上对于跨域问题的解决配置类中继承的都是WebMvcConfigurationAdapter
我就觉得很奇怪,就去百度了一下他们的差别,现在记录一下
1.@EnableWebMvc+extends WebMvcConfigurationAdapter,在扩展的类中重写父类的方法即可,这种方式会屏蔽springboot的@EnableAutoConfiguration中的设置
2.extends WebMvcConfigurationSupport,在扩展的类中重写父类的方法即可,这种方式会屏蔽springboot的@EnableAutoConfiguration中的设置
3.extends WebMvcConfigurationAdapter,在扩展的类中重写父类的方法即可,这种方式依旧使用springboot的@EnableAutoConfiguration中的设置
至于为什么会屏蔽@EnableAutoConfiguration的设置,这要看@EnableAutoConfiguration到底做了什么,springMvc在boot完成自动装配相关的类:WebMvcAutoConfiguration
@Configuration
@ConditionalOnWebApplication(type = Type.SERVLET)
@ConditionalOnClass({ Servlet.class, DispatcherServlet.class, WebMvcConfigurer.class })
@ConditionalOnMissingBean(WebMvcConfigurationSupport.class)
@AutoConfigureOrder(Ordered.HIGHEST_PRECEDENCE + 10)
@AutoConfigureAfter({ DispatcherServletAutoConfiguration.class,
ValidationAutoConfiguration.class })
public class WebMvcAutoConfiguration
可以看到一旦boot中一旦出现WebMvcConfigurationSupport类的话,这个自动装配的类就不会出现了,这就是上述1,2表述的原因
另外现在WebMvcConfigurationAdapter已经被WebMvcConfigurer代替
至于3,比较复杂,想要深入了解可以参考原文
参考
原文:https://blog.csdn.net/lqadam/article/details/80637335
WebMvcConfigurationSupport 和WebMvcConfigurationAdapter的区别
原文:https://www.cnblogs.com/changeCode/p/10938640.html