介绍
在使用SpringBoot项目时,在Maven依赖中我们常常会引入很多Starter,这些Starter可以帮助我们简化配置,我们可以直接在application.yml文件中进行简单配置即可,以knife4j为例
maven 中引入依赖
application.yml中完成配置
开发Starter
接下来我将介绍如何开发一个属于自己的Starter
创建一个SpringBoot项目
在选择依赖时,可以添加Spring Configuration Processor(可以在编写配置时进行自动补全),其他依赖可以自行选择添加
修改pom.xml文件
按照需求修改版本号等
删除Build (一定要删,不然会影响运行)
删去主类
编写代码
下面我会以一个简单的例子方便演示,使用前在配置文件中配置accessKey、secretKey
Client类
package com.xiaoc.sdktest.client;
import lombok.Data;
@Data
public class XiaoCClient {
private String accessKey;
private String secretKey;
public XiaoCClient(String accessKey, String secretKey) {
this.accessKey = accessKey;
this.secretKey = secretKey;
}
public String test(){
return accessKey+"."+secretKey;
}
}
Config类
package com.xiaoc.sdktest;
import com.xiaoc.sdktest.client.XiaoCClient;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@ConfigurationProperties("xiaoc.client")
@Data
@ComponentScan
public class XiaoCClientConfig {
private String accessKey;
private String secretKey;
@Bean
public XiaoCClient xiaoCClient(){
return new XiaoCClient(accessKey,secretKey);
}
}
编写自动配置信息
创建META-INF,在该目录下创建spring.factories文件(定义Spring Boot的自动配置)
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com/xiaoc/sdktest/config/XiaoCClientConfig
下载到本地仓库
在maven中使用install(使用前跳过测试,因为以及删去了主类,所以在运行时会报错,也可以把Test文件删去进行下载)
在另一个项目中进行测试
- 打开一个新项目
- 引入依赖(即上面maven中配置的信息)
<dependency>
<groupId>com.xiaoc</groupId>
<artifactId>SDK-Test</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
- 配置信息
- 测试
测试类
package com.xiaoc.sdktest;
import com.xiaoc.sdktest.client.XiaoCClient;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import javax.annotation.Resource;
@SpringBootTest
public class test {
@Resource
XiaoCClient xiaoCClient;
@Test
void test(){
String res = xiaoCClient.test();
System.out.println(res);
}
}
运行结果
注意!!!
如果运行出现无法自动注入等情况,一定要检查自己的版本,我这里使用的Spring Boot 版本是2.7.8 ,java版本是8 ,SpringBoot 3.x兼容性还是有点问题,平时得多注意注意