一、简介
SpringBoot 最强大的功能就是把我们常用的场景抽取成了一个个starter(场景 启动器),我们通过引入springboot 为我提供的这些场景启动器,我们再进行 少量的配置就能使用相应的功能。即使是这样,springboot也不能囊括我们所 有的使用场景,往往我们需要自定义starter,来简化我们对springboot的使 用。
二、如何自定义starter
1.实例
如何编写自动配置 ?
我们参照@WebMvcAutoConfiguration为例,我们看看们需要准备哪些东 西,下面是WebMvcAutoConfiguration的部分代码:
1 @Configuration
2 @ConditionalOnWebApplication
3 @ConditionalOnClass({
Servlet.class, DispatcherServlet.class, Web
MvcConfigurerAdapter.class})
4 @ConditionalOnMissingBean({
WebMvcConfigurationSupport.class})
5 @AutoConfigureOrder(‐2147483638)
6 @AutoConfigureAfter({
DispatcherServletAutoConfiguration.class, V
alidationAutoConfiguration.class})
7 public class WebMvcAutoConfiguration {
8
9 @Import({
WebMvcAutoConfiguration.EnableWebMvcConfiguration.clas
s})
10 @EnableConfigurationProperties({
WebMvcProperties.class, Resour
ceProperties.class})
11 public static class WebMvcAutoConfigurationAdapter extends Web
MvcConfigurerAdapter {
12
13 @Bean
14 @ConditionalOnBean({
View.class})
15 @ConditionalOnMissingBean
16 public BeanNameViewResolver beanNameViewResolver() {
17 BeanNameViewResolver resolver = new BeanNameViewResolver();
18 resolver.setOrder(2147483637);
19 return resolver;
20 }
21 }
22 }
我们可以抽取到我们自定义starter时同样需要的一些配置。
1 @Configuration //指定这个类是一个配置类
2 @ConditionalOnXXX //指定条件成立的情况下自动配置类生效
3 @AutoConfigureOrder //指定自动配置类的顺序
4 @Bean //向容器中添加组件
5 @ConfigurationProperties