使用SpringBoot自定義starter詳解
一、新建一個工程
工程由xxx-sprig-boot-starter和xxx-sprig-boot-starter-configure兩個模塊組成;

xxx-sprig-boot-starter模塊
- 只用來做依賴導入
- 依賴于
xxx-sprig-boot-starter-configure模塊,沒有實際代碼
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.ander</groupId>
<artifactId>ander-spring-boot-starter</artifactId>
<version>1.0-SNAPSHOT</version>
<!--依賴ander-spring-boot-starter-configure工程-->
<dependencies>
<dependency>
<groupId>com.ander</groupId>
<artifactId>ander-spring-boot-starter-configure</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
</project>

xxx-sprig-boot-starter-configure模塊
- 專門自動配置模塊
- 依賴于
spring-boot-starter-web
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.10.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.ander</groupId>
<artifactId>ander-spring-boot-starter-configure</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>ander-spring-boot-starter-configure</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
</project>
二、xxx-sprig-boot-starter-configure模塊自動配置編碼
2.1 服務層編碼
/**
* Service層
*
* @Author: Ander
* @Date: 2021-05-04
*/
public class HelloService {
private HelloServiceProperties helloServiceProperties;
public String helloService(String name) {
return helloServiceProperties.getPrefix() + " "+ name + " " + helloServiceProperties.getSuffix();
}
public HelloServiceProperties getHelloServiceProperties() {
return helloServiceProperties;
}
public void setHelloServiceProperties(HelloServiceProperties helloServiceProperties) {
this.helloServiceProperties = helloServiceProperties;
}
}
2.2 屬性配置類編碼
/**
* 屬性配置類
*
* @Author: Ander
* @Date: 2021-05-04
*/
@ConfigurationProperties(prefix = "com.ander")
public class HelloServiceProperties {
private String prefix = "hi";
private String suffix = "hello world";
public String getPrefix() {
return prefix;
}
public void setPrefix(String prefix) {
this.prefix = prefix;
}
public String getSuffix() {
return suffix;
}
public void setSuffix(String suffix) {
this.suffix = suffix;
}
}
2.3 starter自動配置類編碼
@EnableConfigurationProperties({HelloServiceProperties.class})作用:讓xxxProperties生效加入到容器中
/**
* 自定義starter自動配置類
*
* @Author: Ander
* @Date: 2021-05-04
*/
@Configuration
@ConditionalOnWebApplication // 指定web應用才生效
@EnableConfigurationProperties({HelloServiceProperties.class})
public class HelloServiceAutoConfigure {
@Autowired
private HelloServiceProperties helloServiceProperties;
@Bean
public HelloService helloService() {
HelloService helloService = new HelloService();
helloService.setHelloServiceProperties(helloServiceProperties);
return helloService;
}
}
2.4 添加自動配置類到META-INF路徑下

2.5 將工程安裝到本地
注意先安裝xxx-spring-boot-starter-configure,再安裝xxx-spring-boot-starter

三、新建一個工程測試自定義starter
3.1 編寫controller層
/**
* starter測試控制類
*
* @Author: Ander
* @Date: 2021-05-05
*/
@RestController
public class StarterTestController {
@Autowired
private HelloService helloService;
@GetMapping("hello")
public String hello(String name) {
return helloService.helloService(name);
}
}
3.2 編寫配置文件
server.port=8888
com.ander.prefix=HI
com.ander.suffix=HELLO WORLD
四、測試結果
4.1 使用starter默認配置

4.2 使用自定義配置

到此這篇關于使用Spring Boot自定義starter詳解的文章就介紹到這了,更多相關Spring Boot自定義starter內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
SpringSecurity OAtu2+JWT實現微服務版本的單點登錄的示例
本文主要介紹了SpringSecurity OAtu2+JWT實現微服務版本的單點登錄的示例,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-05-05
SpringBoot采用AJAX實現異步發(fā)布帖子詳解
Ajax是一種web應用技術,可以借助客戶端腳本(javascript)與服務端應用進行異步通訊,獲取服務端數據以后,可以進行局部刷新,進而提高數據的響應和渲染速度。所有的Ajax請求都會基于DOM(HTML元素)事件,通過XHR(XMLHttpRequest)對象實現與服務端異步通訊局部更新2022-08-08

