編寫自己的SpringBoot-Starter

*** 開發自己的starter準備思考

一 . starter的好處是,集成衆多依賴,提供一個一站式的依賴項。 Starter相當於模塊,它能將模塊所需的依賴整合起來並對模塊內的Bean根據環境( 條件)進行自動配置。 使用者只需要依賴相應功能的Starter,無需做過多的配置和依賴, Spring Boot就能自動掃描並加載相應的模塊。                   2 . 命名   spring官方的starter命令爲spring-boot-starter-xxx,所以我們開發的項目不要以spring-boot開頭。 建議寫成:xxx公司組織-spring-boot-starter-yyy模塊

二 .  開發步驟

1.新建Maven項目,在項目的POM文件中定義使用的依賴;

2.新建配置類,寫好配置項和默認的配置值,指明配置項前綴;

3.新建自動裝配類,使用@Configuration和@Bean來進行自動裝配;

4.新建spring.factories文件,指定Starter的自動裝配類;

 

三.  具體代碼

3.1  新建一個springboot項目,在pom文件中增加以下依賴:

<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-configuration-processor</artifactId>
 <optional>true</optional>
</dependency>
主要的作用是在編譯時在META-INF下生成spring-configuration-metadata.json 文件,該文件主要爲IDE使用。 即可以通過在application.properties文件中通過ctrl + 點擊進入配置屬性所在的類中

3.2 配置類

一看就會,編寫自己的SpringBoot-Starter

關鍵是要指定配置項的前綴。這些配置項,也可以設置默認值。

3.3 自動裝配類

自動裝配類是整個starter的邏輯核心。根據配置項的值,自動注入合適的bean。

在這個項目中,有一個抽象的AbstractMyService,代表客戶端會使用的服務bean。

MyStarterServiceV1和MyStarterServiceV2是根據條件注入的具體實現類。

也就是客戶端在配置spring101.version=v1會使用MyStarterServiceV1,

配置spring101.version=v2會使用MyStarterServiceV2

一看就會,編寫自己的SpringBoot-Starter

3.4 新建spring.factories文件,指定Starter的自動裝配類。

在resources下新建META-INF文件夾,新建spring.factories文件。內容爲:

#指定autoconfigure加載的自動裝配類是哪個
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.uncley.MyAutoConfiguration

 四. 打包測試

maven clean install

先install到本地倉庫測試

新創建一個普通的springboot工程:mystarter-use 依賴 在application.properties增加配置

spring101.age=22
spring101.name=uncleY
spring101.version=v2

寫一個測試類

@Component
@Slf4j
public class MyStarterUseTest implements CommandLineRunner {
 @Autowired
 private AbstractMyService myService;
 @Override
 public void run(String... args) throws Exception {
 log.info(myService.hello());
 }
}

通過修改spring101.version的值可以觀察到,實例化了不同的service

一看就會,編寫自己的SpringBoot-Starter

發佈了59 篇原創文章 · 獲贊 18 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章