1、定制化的常见形式
- 批改配置文件;
- xxxxxCustomizer;
- 编写自定义的配置类 xxxConfiguration;+ @Bean替换、减少容器中默认组件;视图解析器
Web利用 编写一个配置类实现** **WebMvcConfigurer 即可定制化web性能;+ @Bean给容器中再扩大一些组件
(次要)@Configurationpublic class AdminWebConfig implements WebMvcConfigurer
- @EnableWebMvc + WebMvcConfigurer —— @Bean 能够全面接管SpringMVC,所有规定全副本人重新配置; 实现定制和扩大性能
- 原理
- 1、WebMvcAutoConfiguration :默认的SpringMVC的主动配置性能类。动态资源、欢送页等等一堆的配置
- 2、一旦应用 @EnableWebMvc ,会 @Import(DelegatingWebMvcConfiguration.class)
- 3、DelegatingWebMvcConfiguration 的 作用,只保障SpringMVC最根本的应用
- 把所有零碎中的 WebMvcConfigurer 拿过去。所有性能的定制都是这些 WebMvcConfigurer 合起来一起失效
- 主动配置了一些十分底层的组件。比方RequestMappingHandlerMapping,这些组件依赖的组件都是从容器中获取
- public class DelegatingWebMvcConfiguration extends WebMvcConfigurationSupport
- 4、WebMvcAutoConfiguration 外面的配置要能失效 ,容器中必须没有WebMvcConfigurationSupport 这个类 @ConditionalOnMissingBean(WebMvcConfigurationSupport.class)
- 5、@EnableWebMvc 导致了 WebMvcAutoConfiguration 没有失效。( @EnableWebMvc会给容器中导入DelegatingWebMvcConfiguration,相当于导入了WebMvcConfigurationSupport)
2、原理剖析套路
导入场景启动器starter
--->场景启动器导入一系列的主动配置 xxxxAutoConfiguration--->
这些主动配置外面通过@Bean给容器中 导入xxx组件--->组件的默认属性绑定xxxProperties--->这些Properties 绑定配置文件项
如果当前想扩大SpringMvc:写一个实现了WebMvcConfigurer的配置类 即可定制化web性能 + @Bean给容器中再扩大一些组件或者导入场景启动器starter,而后批改配置文件(yaml)