坚持学习,做一条乐观坚强的狗。还不是因为穷。
1 spring boot starter
1.1 spring boot starter 是啥
Starter相当于模块,它能将模块所需的依赖整合起来并对模块内的Bean根据环境( 条件)进行自动配置。使用者只需要依赖相应功能的Starter,无需做过多的配置和依赖,Spring Boot就能自动扫描并加载相应的模块。
总结:
1.它整合了这个模块需要的依赖库
2.提供对模块的配置项给使用者
3.提供自动配置类对模块内的Bean进行自动装配
例如,在Maven的依赖中加入spring-boot-starter-web就能使项目支持Spring MVC,并且Spring Boot还为我们做了很多默认配置,无需再依赖spring-web、spring-webmvc等相关包及做相关配置就能够立即使用起来。
1.2 Creating Your Own Starter
1.2.1 采用Spring Initializr搭建项目
(1)pom 文件
Spring Initializr是官方提供的一种快捷搭建Spring Boot应用的方式,网址,然后在 pom 文件中添加依赖。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure-processor</artifactId>
<optional>true</optional>
</dependency>
(2)配置类
/**
* 监控配置文件
*/
@ConfigurationProperties(prefix = "monitor")
public class MonitorConfigProperties {
/**
* 是否启用 默认为启用
*/
private Boolean enable = true;
/**
* 用户名称
*/
private String username;
/**
* 密码
*/
private String password;
}
(3)自动装配类
使用 @Configuration
和 @Bean
来进行自动装配
/**
* 自动配置
*/
@Configuration
@EnableConfigurationProperties(MonitorConfigProperties.class)
@Import({MonitorCheckController.class, Monitor.class,
DataSourceConfig.class,RedisCacheConfig.class, CheckUrlConfig.class})
public class MonitorAutoConfig {
@Bean
@ConditionalOnBean(Env.class)
public LrtsEnv evn(){
return new Env();
}
}
补充:
@ConditionalOnBean
(4)新建spring.factories文件,指定Starter的自动装配类
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.monitor.config.MonitorAutoConfig
spring.factories文件位于resources/META-INF目录下,需要手动创建;
org.springframework.boot.autoconfigure.EnableAutoConfiguration
后面的类名说明了自动装配类,如果有多个 ,则用逗号分开;
SpringBoot 应用在启动的时候,会通过org.springframework.core.io.support.SpringFactoriesLoader
读取 classpath下每个 Starter 的 spring.factories 文件,加载自动装配类进行Bean的自动装配;
至此,整个Starter开发完毕,Deploy到中央仓库或Install到本地仓库后即可使用。