Springboot3自定義starter業(yè)務(wù)代碼
場景:抽取聊天機(jī)器人場景,它可以打招呼。 效果:任何項(xiàng)目導(dǎo)入此 starter
都具有打招呼功能,并且問候語中的人名需要可以在配置文件中修改。
創(chuàng)建自定義 starter 項(xiàng)目,引入 spring-boot-starter 基礎(chǔ)依賴。
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>編寫模塊功能,引入模塊所有需要的依賴。編寫 xxxAutoConfiguration 自動(dòng)配置類,幫其他項(xiàng)目導(dǎo)入這個(gè)模塊需要的所有組件。編寫配置文件 META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports指定啟動(dòng)需要加載的自動(dòng)配置。其他項(xiàng)目引入即可使用
業(yè)務(wù)代碼

@Service
public class RobotService {
@Autowired
RobotProperties robotProperties;
public String sayHello(){
return "hello"+robotProperties.getName()+":"+robotProperties.getAge()+"郵箱"+robotProperties.getEmail();
}
}寫下面代碼為了進(jìn)行屬性綁定,配置文件(application.properties)配了什么屬性項(xiàng)這個(gè)類里面都可以直接進(jìn)行綁定關(guān)聯(lián)(在配置文件中寫的數(shù)據(jù)通過這個(gè)配置文件,在業(yè)務(wù)代碼中引入RobotProperties robotProperties并進(jìn)行自動(dòng)注入,就會(huì)通過這個(gè)來獲取配置文件中的屬性)
@ConfigurationProperties(prefix = "robot")
@Component
@Data
public class RobotProperties {
private String name;
private String age;
private String email;
}<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
基本抽取
創(chuàng)建starter項(xiàng)?,把公共代碼需要的所有依賴導(dǎo)? 把公共代碼復(fù)制進(jìn)來

不選場景


引入需要的web包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>刪除主程序類

在新項(xiàng)目中導(dǎo)入該starter

??寫?個(gè) RobotAutoConfiguration ,給容器中導(dǎo)?這個(gè)場景需要的所有組件
為什么這些組件默認(rèn)不會(huì)掃描進(jìn)去?
starter所在的包和 引?它的項(xiàng)?的主程序所在的包不是??層級(jí)


別?引?這個(gè) starter ,直接導(dǎo)?這個(gè) RobotAutoConfiguration ,就能把這個(gè)場景的組件導(dǎo)?進(jìn)來 使用@EnableXxx機(jī)制

完全自動(dòng)配置
- 依賴SpringBoot的SPI機(jī)制
- META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
?件中編寫好我們?動(dòng)配置類的全類名即可 - 項(xiàng)?啟動(dòng),?動(dòng)加載我們的?動(dòng)配置類

到此這篇關(guān)于Springboot3自定義starter業(yè)務(wù)代碼的文章就介紹到這了,更多相關(guān)Springboot3自定義starter內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java用split分割字符串的一個(gè)有趣現(xiàn)象
最近在項(xiàng)目中使用了java中的split分割字符串,發(fā)現(xiàn)了一個(gè)bug,充分了展示了自己對(duì)java底層的認(rèn)知有很多的不足和欠缺。下面將這次的經(jīng)過總結(jié)出來分享給大家,有需要的朋友們可以參考借鑒,下面來一起看看吧。2016-12-12
SpringBoot集成RocketMQ發(fā)送事務(wù)消息的原理解析
RocketMQ 的事務(wù)消息提供類似 X/Open XA 的分布事務(wù)功能,通過事務(wù)消息能達(dá)到分布式事務(wù)的最終一致,這篇文章主要介紹了SpringBoot集成RocketMQ發(fā)送事務(wù)消息,需要的朋友可以參考下2022-06-06
springboot+maven多環(huán)境動(dòng)態(tài)配置及編譯失敗的解決方案(步驟詳解)
這篇文章主要介紹了springboot+maven多環(huán)境動(dòng)態(tài)配置及編譯失敗的解決方案,本文通過實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2023-11-11
idea resources目錄下的application.properties不能自動(dòng)提示問題
這篇文章主要介紹了idea resources目錄下的application.properties不能自動(dòng)提示問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11

