SpringBoot Starter机制
我们知道 SpringBoot 通过 starter 包引入对应的第三方 jar 包,然后通过自动配置机制来自动创建该第三方 jar 包对应的功能的 bean 对象。Starter可以理解为一个可拔插式的插件,
例如,你想使用Reids插件,那么可以使用spring-boot-starter-redis
;
如果想使用MongoDB,可以使用spring-boot-starter-data-mongodb
自定义 Starter 包
Starter的命名规则
SpringBoot提供的starter以spring-boot-starter-xxx
的方式命名的。
官方建议自定义的starter使用xxx-spring-boot-starter
命名规则。
以区分SpringBoot生态提供的starter
自定义Starter
(1)新建maven jar工程,工程名为zdy-spring-boot-starter,导入依赖:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure</artifactId>
<version>2.2.2.RELEASE</version>
</dependency>
</dependencies>
(2)编写javaBean
解析 application.properties 文件内以 simplebean开头的属性。
@ConfigurationProperties(prefix = "simplebean")
public class SimpleBean {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "SimpleBean{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
}
(3)编写配置类MyAutoConfiguration
@Configuration
@ConditionalOnClass //@ConditionalOnClass:当类路径classpath下有指定的类的情况下进行自动配置
@EnableConfigurationProperties(SimpleBean.class)
public class MyAutoConfiguration {
static {
System.out.println("MyAutoConfiguration init....");
}
@Bean
public SimpleBean simpleBean(){
return new SimpleBean();
}
}
(4)resources下创建/META-INF/spring.factories
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.hbger.config.MyAutoConfiguration
使用自定义Starter
(1)导入自定义Starter的依赖
<dependency>
<groupId>com.hbger</groupId>
<artifactId>zdy-spring-boot-starter</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
(2)在全局配置文件中配置属性值
simplebean.id=1
simplebean.name=自定义starter
(3)编写测试方法
//测试自定义starter
@Autowired
private SimpleBean simpleBean;
@Test
public void zdyStarterTest(){
System.out.println(simpleBean);
}