定制化SpringBoot的常见方式
-
修改配置文件 bootstrap.yml 或者 application.yml 其中的配置项能配什么可以参考每一个starter下的AutoConfiguration文件下绑定的Properties文件
-
自定义配置类 如xxxConfiguration+ @Bean替换带容器中的默认组件,因为默认配置的组件很多都加上了@ConditionalOnMissBean 的注解 当我们自己定义了一个组件之后默认就失效了 如视图解析器
-
Web应用 编写一个配置类实现WebMvcConfigurer 就可以定制化web功能了 然后可以 @Bean给容器再拓展一些新的组件
@Configuration public class AdminWebConfig implements WebMvcConfigurer
-
@EnableWebMvc + WebMvcConfigurer 开启可以全面接管SpringMVC 所有WebMvcAutoConfiguration的默认配置将会失效,SpringMVC只会为我们准备最基本如MappingHandler的基础组件 原因是在WebMvcAutoConfiguration 标注了@ConditionalOnMissingBean(WebMvcConfigurationSupport.class) 而 @EnableWebMvc 导入了@Import(DelegatingWebMvcConfiguration.class) DelegatingWebMvcConfiguration是WebMvcConfigurationSupport的子类导致整个WebMvcAutoConfiguration 失效 慎用!!
SpringBoot原理分析的套路
- 找场景启动器starter
- 找启动器下面的xxxAutoConfiguration
- 查看AutoConfiguration导入了哪些组件
- 查看AutoConfiguration绑定的properties文件可以修改哪些属性