Springboot 自定义Starter
-
新建一个maven项目 spring-boot-starter-diy
<groupId>org.example</groupId>
<artifactId>diy-spring-boot-starter</artifactId>
<packaging>jar</packaging>
<version>1.0</version>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
<version>2.3.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure</artifactId>
<version>2.3.2.RELEASE</version>
</dependency>
</dependencies>
-
编写一个封装配置参数的java类
@ConfigurationProperties(prefix = "xxxxx")
public class DiyStarterProperties {
private String config;
public void setConfig(String config) {
this.config = config;
}
public String getConfig() {
return config;
}
}
-
编写一个用于注入配置属性的配置类
@Configuration
@ConditionalOnClass(DiyStarterService.class)
@EnableConfigurationProperties(DiyStarterProperties.class)
public class AutoConfiguration {
*/***
** 注入属性配置类*
**/*
@Resource
private DiyStarterProperties properties;
@Bean
@ConditionalOnMissingBean(DiyStarterService.class)
public DiyStarterService msgService() {
*// 如果提供了其他set方法,在此也可以调用对应方法对其进行相应的设置或初始化。*
return new DiyStarterService(properties.getConfig());
}
}
-
编写一个自定义业务的Service类
public class DiyStarterService {
private final String config;
public DiyStarterService(String config) {
this.config = config;
}
// 我在这里仅为了展示,将注入的配置字符串倒转打印在控制台上
public String reverse() {
String s1 = new StringBuilder(config).reverse().toString();
System.*out*.println(s1);
return s1;
}
}
-
在 src\main\resources\META-INF 目录下新建 spring.factories 配置文件,文件内添加如下配置。使步骤5的配置类生效
org.springframework.boot.autoconfigure.EnableAutoConfiguration=org.example.AutoConfiguration
-
最终项目内文件结构如下
-
执行mvn install 打包成 jar 到本地
-
新建一个测试项目。添加maven依赖。测试项目application.yml配置属性,编写测试类执行测试。
application.yml配置
xxxxx:
config: 'test starter'
pom.xml依赖
<dependency>
<groupId>org.example</groupId>
<artifactId>diy-spring-boot-starter</artifactId>
<version>1.0</version>
</dependency>
测试类
@Autowired
DiyStarterService diyStarterService;
@Test
public void testDiy(){
String reverse = diyStarterService.reverse();
}
浙公网安备 33010602011771号