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

xxx-sprig-boot-starter模塊
- 只用來做依賴導(dǎo)入
- 依賴于
xxx-sprig-boot-starter-configure模塊,沒有實(shí)際代碼
<?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模塊
- 專門自動(dòng)配置模塊
- 依賴于
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模塊自動(dòng)配置編碼
2.1 服務(wù)層編碼
/**
* 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自動(dòng)配置類編碼
@EnableConfigurationProperties({HelloServiceProperties.class})作用:讓xxxProperties生效加入到容器中
/**
* 自定義starter自動(dòng)配置類
*
* @Author: Ander
* @Date: 2021-05-04
*/
@Configuration
@ConditionalOnWebApplication // 指定web應(yīng)用才生效
@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 添加自動(dòng)配置類到META-INF路徑下

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

三、新建一個(gè)工程測(cè)試自定義starter
3.1 編寫controller層
/**
* starter測(cè)試控制類
*
* @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
四、測(cè)試結(jié)果
4.1 使用starter默認(rèn)配置

4.2 使用自定義配置

到此這篇關(guān)于使用Spring Boot自定義starter詳解的文章就介紹到這了,更多相關(guān)Spring Boot自定義starter內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Springboot中靜態(tài)文件的兩種引入方式總結(jié)
這篇文章主要介紹了Springboot中靜態(tài)文件的兩種引入方式總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03
SpringSecurity OAtu2+JWT實(shí)現(xiàn)微服務(wù)版本的單點(diǎn)登錄的示例
本文主要介紹了SpringSecurity OAtu2+JWT實(shí)現(xiàn)微服務(wù)版本的單點(diǎn)登錄的示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05
Java ArrayList 實(shí)現(xiàn)實(shí)例講解
ArrayList是基于數(shù)組實(shí)現(xiàn)的,是一個(gè)動(dòng)態(tài)數(shù)組,其容量能自動(dòng)增長(zhǎng),類似于C語言中的動(dòng)態(tài)申請(qǐng)內(nèi)存,動(dòng)態(tài)增長(zhǎng)內(nèi)存。這篇文章主要介紹了java ArrayList 實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下2016-11-11
Jdk1.8 HashMap實(shí)現(xiàn)原理詳細(xì)介紹
這篇文章主要介紹了Jdk1.8 HashMap實(shí)現(xiàn)原理詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下2016-12-12
SpringBoot采用AJAX實(shí)現(xiàn)異步發(fā)布帖子詳解
Ajax是一種web應(yīng)用技術(shù),可以借助客戶端腳本(javascript)與服務(wù)端應(yīng)用進(jìn)行異步通訊,獲取服務(wù)端數(shù)據(jù)以后,可以進(jìn)行局部刷新,進(jìn)而提高數(shù)據(jù)的響應(yīng)和渲染速度。所有的Ajax請(qǐng)求都會(huì)基于DOM(HTML元素)事件,通過XHR(XMLHttpRequest)對(duì)象實(shí)現(xiàn)與服務(wù)端異步通訊局部更新2022-08-08
Java微信公眾平臺(tái)之群發(fā)接口(高級(jí)群發(fā))
這篇文章主要為大家詳細(xì)介紹了Java微信公眾平臺(tái)之群發(fā)接口,高級(jí)群發(fā)功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05
解決Eclipse中java文件的圖標(biāo)變成空心J的問題
這篇文章主要介紹了解決Eclipse中java文件的圖標(biāo)變成空心J的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-01-01

