Springboot3自定義starter業(yè)務代碼
場景:抽取聊天機器人場景,它可以打招呼。 效果:任何項目導入此 starter
都具有打招呼功能,并且問候語中的人名需要可以在配置文件中修改。
創(chuàng)建自定義 starter 項目,引入 spring-boot-starter 基礎依賴。
<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 自動配置類,幫其他項目導入這個模塊需要的所有組件。編寫配置文件 META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports指定啟動需要加載的自動配置。其他項目引入即可使用
業(yè)務代碼

@Service
public class RobotService {
@Autowired
RobotProperties robotProperties;
public String sayHello(){
return "hello"+robotProperties.getName()+":"+robotProperties.getAge()+"郵箱"+robotProperties.getEmail();
}
}寫下面代碼為了進行屬性綁定,配置文件(application.properties)配了什么屬性項這個類里面都可以直接進行綁定關聯(lián)(在配置文件中寫的數(shù)據(jù)通過這個配置文件,在業(yè)務代碼中引入RobotProperties robotProperties并進行自動注入,就會通過這個來獲取配置文件中的屬性)
@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項?,把公共代碼需要的所有依賴導? 把公共代碼復制進來

不選場景


引入需要的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>刪除主程序類

在新項目中導入該starter

??寫?個 RobotAutoConfiguration ,給容器中導?這個場景需要的所有組件
為什么這些組件默認不會掃描進去?
starter所在的包和 引?它的項?的主程序所在的包不是??層級


別?引?這個 starter ,直接導?這個 RobotAutoConfiguration ,就能把這個場景的組件導?進來 使用@EnableXxx機制

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

到此這篇關于Springboot3自定義starter業(yè)務代碼的文章就介紹到這了,更多相關Springboot3自定義starter內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
springboot2啟動時執(zhí)行,初始化(或定時任務)servletContext問題
這篇文章主要介紹了springboot2啟動時執(zhí)行,初始化(或定時任務)servletContext問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-01-01
Java調(diào)度線程池ScheduledThreadPoolExecutor不執(zhí)行問題分析
最近項目上反饋某個重要的定時任務突然不執(zhí)行了,很頭疼,開發(fā)環(huán)境和測試環(huán)境都沒有出現(xiàn)過這個問題。定時任務采用的是ScheduledThreadPoolExecutor,后來一看代碼發(fā)現(xiàn)踩了一個大坑。本文就來和大家聊聊這次的踩坑記錄與解決方法,需要的可以參考一下2023-03-03
SpringBoot中配置Web靜態(tài)資源路徑的方法
這篇文章主要介紹了SpringBoot中配置Web靜態(tài)資源路徑的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-09-09
springboot+redis自定義注解實現(xiàn)發(fā)布訂閱的實現(xiàn)代碼
在Redis中客戶端可以通過訂閱特定的頻道來接收發(fā)送至該頻道的消息,本文主要介紹了springboot+redis自定義注解實現(xiàn)發(fā)布訂閱,具有一定的參考價值,感興趣的可以了解一下2023-08-08
Lombok @Slf4j log對象沒有info等方法不可用問題及解決
本文主要介紹了如何解決Spring Boot項目中的日志依賴沖突問題,以及如何使用Lombok和SLF4J進行日志記錄,Lombok通過生成Logger對象簡化了日志記錄,而SLF4J提供了一個統(tǒng)一的日志接口,允許開發(fā)者在運行時選擇不同的日志實現(xiàn)2024-12-12

