前言
前面我們說到了在SpringBoot中自定義Enable子產品,那麼如何在SpringBoot中如何自定義一個Starter子產品呢?要想自定義一個Starter子產品,就需要了解自動裝配的原理。
首先,想想我們自動裝配涉及到哪些關鍵的類或者屬性檔案?無非就是配置類+spring.factories屬性檔案。
自定義starter的條件
- 根據條件檢查classpath下對應的類,也就是說需要提供對應可檢查的類。
- 當滿足條件時能夠生成自定義的Bean,并注冊到容器中去。
- 能夠自動配置項目所需要的配置。
開始實施
第一步:定義好需要通過配置類來執行個體化的Bean
這裡定義的bean沒啥好說的。
第二步: 定義好屬性類
這裡通過
@ConfigurationProperties
注解将配置檔案的字首為msg的配置資訊與自身的屬性綁定,所有在配置檔案中能配置的屬性都在MsgProperties類中封裝着,配置檔案能配置什麼隻需要看這個屬性類的屬性。
第二步:定義好配置類
@Bean注解表明該方法執行個體化的對象會被加載到容器當中;
@ConditionalOnMissingBean注解指明當容器中不存在MsgService的對象時再進行執行個體化;@EnableConfigurationProperties注解是使MsgProperties生效,也就是将MsgProperties類注入到IOC容器中。
@ConditionalOnClass 注解表明隻有classpath下能找到MsgService類時才會建構這個Bean。
第三步:定義好spring.factories屬性檔案
要想實作自動配置,那麼spring.factories屬性檔案是必不可少的,因為SpringBoot需要通過spring.factories找到需要執行個體化的配置類。然後通過SPI的方式來執行個體化。
是以,我們需要在resources 下面增加 META-INF/spring.factories
打包上傳到本地倉庫
上面的步驟都搞好之後,我們這個自定義的starter子產品差不多就可以用了,為了上其他項目可以引入我們的自定義的starter子產品,我們需要通過mvn install指令将這個starter包上傳到我們本地倉庫或者私服。
其他項目引入我們自定義的starter子產品
1. 引入依賴
2. 在application.properties檔案中增加配置
3.測試
啟動項目,通路接口,結果如下:
在這裡插入圖檔描述
總結
本文完整的示範了一遍如何自定義starter子產品。其實了解了自動裝配的原理就很好的能自定義一個starter子產品。它的工作流程無非就三步:
- Spring Boot在啟動時會掃描項目所依賴的JAR包,尋找包含spring.factories屬性檔案的JAR包。
- 根據spring.factories配置加載EnableAutoConfiguration,這裡用到了SPI技術
-
根據@Conditional注解的條件,進行自動配置并将Bean注入到Spring容器。
希望對讀者朋友們有所幫助。
源碼下載下傳
源碼下載下傳