【spring】Spring Boot:定制自己的starter
2017-12-01 17:48
711 查看
概念
在学习Spring Boot的过程中,接触最多的就是starter。可以认为starter是一种服务——使得使用某个功能的开发者不需要关注各种依赖库的处理,不需要具体的配置信息,由Spring Boot自动通过classpath路径下的类发现需要的Bean,并织入bean步骤
引入spring boot 的配置<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-autoconfigure</artifactId> </dependency> <!-- Optional dependencies --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <optional>true</optional> </dependency> <!-- @ConfigurationProperties annotation processing (metadata for IDEs) --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency>
增加自动配置文件
@org.springframework.context.annotation.Configuration @ConditionalOnClass({ SqlSessionFactory.class, SqlSessionFactoryBean.class }) @ConditionalOnBean(DataSource.class) @EnableConfigurationProperties(MybatisProperties.class) @AutoConfigureAfter(DataSourceAutoConfiguration.class) public class MybatisAutoConfiguration { }
在src/main/resources目录下新建META-INF文件夹,然后新建spring.factories文件,这个文件用于告诉Spring Boot去找指定的自动配置文件,因此它的内容是
# Auto Configure org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration
分析
正规的starter是一个独立的工程,然后在maven中新仓库注册发布,其他开发人员就可以使用你的starter了。常见的starter会包括下面几个方面的内容:
自动配置文件,根据classpath是否存在指定的类来决定是否要执行该功能的自动配置。
spring.factories,非常重要,指导Spring Boot找到指定的自动配置文件。
endpoint:可以理解为一个admin,包含对服务的描述、界面、交互(业务信息的查询)
health indicator:该starter提供的服务的健康指标
在应用程序启动过程中,Spring Boot使用SpringFactoriesLoader类加载器查找org.springframework.boot.autoconfigure.EnableAutoConfiguration关键字对应的Java配置文件。Spring Boot会遍历在各个jar包种META-INF目录下的spring.factories文件,构建成一个配 置文件链表。除了EnableAutoConfiguration关键字对应的配置文件,还有其他类型的配置文件:
org.springframework.context.ApplicationContextInitializer
org.springframework.context.ApplicationListener
org.springframework.boot.SpringApplicationRunListener
org.springframework.boot.env.PropertySourceLoader
org.springframework.boot.autoconfigure.template.TemplateAvailabilityProvider
org.springframework.test.contex.TestExecutionListener
注意
@ConditionalOnMissingBean的作用是:只有对应的bean在系统中都没有被创建,它修饰的初始化代码块才会执行,用户自己手动创建的bean优先;Spring Boot starter如何找到自动配置文件(xxxxAutoConfiguration之类的文件)?
spring.factories:由Spring Boot触发探测classpath目录下的类,进行自动配置;
@Enable:有时需要由starter的用户触发*查找自动配置文件的过程。
相关文章推荐
- Spring Boot:定制自己的starter
- Spring Boot:定制自己的starter
- 【Spring Boot && Spring Cloud系列】Spring Boot的启动器Starter
- Spring Boot学习--spring-boot-starter-parent及starters
- 自己写spring boot starter
- 在Spring2.5中定制自己的属性编辑器
- 在Spring2.5中定制自己的属性编辑器
- Druid简介(Spring Boot + Mybatis + Druid数据源【自己定制】)
- 自己定制spring的数据源
- Spring Boot . 4 -- 定制 Spring Boot 配置
- Spring Boot系列七 实现自己的spring boot starter工程
- 创建自己的Spring Boot starter
- 【SpringBoot系列4】SpringBoot定制自己的bean
- Spring Boot(三) spring-boot-starter
- 自己定制spring 数据源
- Android Volley入门到精通:定制自己的Request
- Linux_定制自己的vim
- 编译自己功能定制的Fedora7内核
- Android Volley完全解析(三),定制自己的Request
- spring boot 1.5.4 web容器定制(端口号等修改)方法