SpringBoot3.x中自定義開發(fā)通用SDK的實(shí)現(xiàn)
1. 前言
相信大家學(xué)習(xí)SpringBoot到現(xiàn)在,使用Maven構(gòu)建項(xiàng)目時(shí),會(huì)在pom.xml文件中引入各種各樣的依賴,那么我們?nèi)绾螌⒆约撼S玫囊恍┕ぞ哳悗爝M(jìn)行封裝成starter或者SDK供其他項(xiàng)目使用呢,本博客就會(huì)帶著大家一步一步創(chuàng)建自定義的SDK依賴
2. 前置準(zhǔn)備
本博客基于的Java開發(fā)環(huán)境如下:
- JDK17
- SpringBoot3.2.6(SpringBoot2.x的項(xiàng)目此處不適用?。。。?/li>
3. 開發(fā)步驟
3.1 創(chuàng)建項(xiàng)目
此處使用IDEA內(nèi)置Spring Initializr初始化工具快速創(chuàng)建項(xiàng)目:
- 填寫項(xiàng)目配置:

- 設(shè)置SpringBoot版本以及依賴

此處一定要勾選(Spring Configuration Processor依賴)
- 點(diǎn)擊create創(chuàng)建項(xiàng)目即可!
3.2 修改無關(guān)配置
3.2.1 設(shè)置項(xiàng)目版本
將pom.xml文件中的項(xiàng)目版本改寫成:<version>0.0.1<version>

3.2.2 刪除Maven的build插件
將如下內(nèi)容從pom.xml文件中刪除

3.2.3 刪除啟動(dòng)類
由于這不是一個(gè)Web項(xiàng)目,因此我們需要將啟動(dòng)類給刪除
3.3 編寫配置類
3.3.1 編寫屬性配置類
例如,下面該類用于讀取配置文件中形如rice.executors.fixedPoolSize=10的變量
/**
* 線程池屬性類
* @author 米飯好好吃
*/
@Configuration
@ConfigurationProperties(prefix = "rice.executors")
@Data
public class ExecutorProperties {
private int fixedPoolSize; // num of threads
}
3.3.2 編寫業(yè)務(wù)類
@Data
public class FixedExecutorTemplate {
private ExecutorService executorService;
public FixedExecutorTemplate(int fixedPoolSize) {
this.executorService = Executors.newFixedThreadPool(fixedPoolSize);
}
public void submit(Runnable task) {
this.executorService.submit(task);
}
}
3.3.3 編寫配置類
該類就用于注入不同的屬性配置類對象,讀取配置文件中的信息,然后創(chuàng)建出不同的bean實(shí)例供其他項(xiàng)目使用,本質(zhì)就是省去了其余項(xiàng)目手動(dòng)創(chuàng)建的麻煩!?。?/strong>
/**
* 項(xiàng)目配置類
* @author 米飯好好吃
*/
@AutoConfiguration
@EnableConfigurationProperties({ExecutorProperties.class})
public class CommonConfig {
@Resource
private ExecutorProperties executorProperties;
@Bean
public FixedExecutorTemplate executorTemplate() {
return new FixedExecutorTemplate(executorProperties.getFixedPoolSize());
}
}
3.4 設(shè)置配置文件
下面我們還需要給其余項(xiàng)目在application.yml等文件中給予友好提示,類似于下圖這樣的效果:

詳細(xì)步驟:
- 在 resources目錄下創(chuàng)建
META-INF/spring兩級(jí)子目錄 - 然后在spring目錄下創(chuàng)建文件名為
org.springframework.boot.autoconfigure.AutoConfiguration.imports的文件,如果配置無誤應(yīng)該在IDEA中會(huì)有識(shí)別提示:

- 在該文件中配置項(xiàng)目配置類的路徑,例如此處就是:
com.rice.commonsdk.CommonConfig

3.5 使用Maven構(gòu)建成Jar包
接下來我們就可以借助Maven的install命令將項(xiàng)目構(gòu)建成jar包,供其余項(xiàng)目引入:

如果出現(xiàn)以下錯(cuò)誤,說明是測試的問題,只要將項(xiàng)目中的test目錄刪除或者在Maven配置面板中選擇toggle skip test model選項(xiàng)即可省略執(zhí)行測試的步驟:
構(gòu)建完成后就可以在本地的Maven倉庫目錄找到所在jar包,默認(rèn)路徑為:C:\用戶目錄\.m2\repository\包名

3.6 測試
我們在別的項(xiàng)目中就可以引入jar包依賴觀察能夠正常使用:

此處我們也能在pom.xml文件中看到提示了:

編寫控制類測試:
@RestController
@RequestMapping("/test")
public class ClientController {
@Resource
private FixedExecutorTemplate fixedExecutorTemplate;
@GetMapping("/fixed")
public void testFixed() {
for (int i = 0; i < 10; i++) {
int j = i;
fixedExecutorTemplate.submit(() -> {
System.out.println(j);
});
}
}
}到此這篇關(guān)于SpringBoot3.x中自定義開發(fā)通用SDK的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)SpringBoot3.x通用SDK內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java如何利用return結(jié)束方法調(diào)用
這篇文章主要介紹了Java如何利用return結(jié)束方法調(diào)用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-02-02
Java導(dǎo)出Excel通用工具類實(shí)例代碼
這篇文章主要給大家介紹了關(guān)于Java導(dǎo)出Excel通用工具類的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04
Java overload和override的區(qū)別分析
方法的重寫(Overriding)和重載(Overloading)是Java多態(tài)性的不同表現(xiàn),想要了解更多請參考本文2012-11-11
使用?Spring?Boot?Admin?監(jiān)控應(yīng)用狀態(tài)的詳細(xì)過程
這篇文章主要介紹了使用?Spring?Boot?Admin?監(jiān)控應(yīng)用狀態(tài),該模塊采集應(yīng)用的內(nèi)部信息,并暴露給外部的模塊,支持?HTTP?和?JMX,并可以與一些第三方監(jiān)控系統(tǒng)(如?Prometheus)整合,需要的朋友可以參考下2022-09-09
JAVA并發(fā)中VOLATILE關(guān)鍵字的神奇之處詳解
這篇文章主要給大家介紹了關(guān)于JAVA并發(fā)中VOLATILE關(guān)鍵字的神奇之處的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05

