天天看點

自定義子產品_SpringBoot之如何自定義一個Starter子產品

自定義子產品_SpringBoot之如何自定義一個Starter子產品

前言

前面我們說到了在SpringBoot中自定義Enable子產品,那麼如何在SpringBoot中如何自定義一個Starter子產品呢?要想自定義一個Starter子產品,就需要了解自動裝配的原理。

首先,想想我們自動裝配涉及到哪些關鍵的類或者屬性檔案?無非就是配置類+spring.factories屬性檔案。

自定義starter的條件

  1. 根據條件檢查classpath下對應的類,也就是說需要提供對應可檢查的類。
  2. 當滿足條件時能夠生成自定義的Bean,并注冊到容器中去。
  3. 能夠自動配置項目所需要的配置。

開始實施

第一步:定義好需要通過配置類來執行個體化的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.測試

啟動項目,通路接口,結果如下:

自定義子產品_SpringBoot之如何自定義一個Starter子產品

在這裡插入圖檔描述

總結

本文完整的示範了一遍如何自定義starter子產品。其實了解了自動裝配的原理就很好的能自定義一個starter子產品。它的工作流程無非就三步:

  1. Spring Boot在啟動時會掃描項目所依賴的JAR包,尋找包含spring.factories屬性檔案的JAR包。
  2. 根據spring.factories配置加載EnableAutoConfiguration,這裡用到了SPI技術
  3. 根據@Conditional注解的條件,進行自動配置并将Bean注入到Spring容器。

    希望對讀者朋友們有所幫助。

源碼下載下傳

源碼下載下傳