本文共 771 字,大约阅读时间需要 2 分钟。
WebMvcAutoConfiguration类上有个注解,叫ConditionalOnMissingBean,这导致有时候该配置类与接口WebMvcConfigurer行为不一样
比如:ConditionalOnMissingBean(A.class),则表示假如容器中有A了,就不再加载A类型以及A类型的子类
也就是说,假如有两个配置类,都继承了A,那么这两个配置类,只有一个会生效,另外一个不生效,而恰好,WebMvcAutoConfiguration上有个ConditionalOnMissingBean(WebMvcConfigurationSupport.class)
所以我们自己定义的配置类,不应该都extends WebMvcConfigurationSupport抽象类,而是应该implements WebMvcConfigurer接口结论:配置类尽量implements WebMvcConfigurer,而不应该extends WebMvcConfigurationSupport
但是还有个问题,就是spring boot额外提供了WebMvcRegistrationsAdapter类,使用该类也可以实现自定义的一些spring组件功能,需要注意的是WebMvcRegistrationsAdapter与WebMvcConfigurer的区别,WebMvcRegistrationsAdapter是当你需要自定义spring mvc九个组件中的前三个的时候,需要使用WebMvcRegistrationsAdapter,而我们在WebMvcConfigurer中自定义的组件,准确的说那不是spring mvc中的九个组件之一,而是一些小的配置,九组件中某一个组件的配置,这点一定要区分清楚,否则你会记得很混乱
转载地址:http://kxhws.baihongyu.com/