Springboot 自定义Starter

 

  1. 新建一个maven项目 spring-boot-starter-diy

<groupId>org.example</groupId>
<artifactId>diy-spring-boot-starter</artifactId>
<packaging>jar</packaging>
<version>1.0</version>
  1. pom.xml添加依赖

<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>
  1. 编写一个封装配置参数的java类

@ConfigurationProperties(prefix = "xxxxx")
public class DiyStarterProperties {
private String config;
public void setConfig(String config) {
  this.config = config;
}
public String getConfig() {
  return config;
}
}
  1. 编写一个用于注入配置属性的配置类

@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());
}
}
  1. 编写一个自定义业务的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;
}
}
  1. 在 src\main\resources\META-INF 目录下新建 spring.factories 配置文件,文件内添加如下配置。使步骤5的配置类生效

org.springframework.boot.autoconfigure.EnableAutoConfiguration=org.example.AutoConfiguration
  • 最终项目内文件结构如下

 

  1. 执行mvn install 打包成 jar 到本地

  2. 新建一个测试项目。添加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();
}
posted @ 2020-09-23 17:25  卡文地洗  阅读(115)  评论(0)    收藏  举报