詳解如何自定義spring-boot-starter自動化配置

前言

Spring的特性是IOC和AOP,那SpringBoot呢?想必大家都會先想到自動配置,因爲自動配置的特性,SpringBoot的配置相比起Spring十分簡便,這也是SpringBoot風靡的原因。本文主要介紹自定義starter的流程與相關細節,並附個人自定義的starter給大家參考。

starter配置啓動流程

  1. 創建自動配置類(XxxAutoConfiguration)並配置需自動化生成組件的掃描區域,如:

    /**
     * WebCommonAutoConfiguration-參數校驗starter
     *
     * @author Wilson
     */
    @Configuration
    @ComponentScan
    @Slf4j
    public class WebValidationAutoConfiguration {
    
        @PostConstruct
        public void init() {
            log.info("Web common validation initialized");
        }
    
    }
    
  2. 在resources目錄下新建META-INF/spring.factories,配置@EnabelAutoConfiguration的註解類(多個則換行配置),格式如下:

    # Auto Configure
    org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
    io.web.validation.WebValidationAutoConfiguration
    
  3. 項目啓動時spring-boot-autoconfigure的AutoConfigurationImportSelector會讀取解析項目與依賴下的META-INF/spring.factories資源文件獲取@EnableAutoConfiguration註解信息並掃描相應package生成所需的bean

Maven依賴配置

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-autoconfigure</artifactId>
        <version>2.1.6.RELEASE</version>
        <scope>provided</scope>
    </dependency>

注:設置scope爲provided方便引入該starter依賴時保持與你項目的spring-boot-autoconfigure的版本一致

錦上添花-application.yml/application配置提示

在java屬性配置文件上添加@ConfigurationProperties註解,項目install後的target/class/META-INF下會生成一個spring-configuration-metadata.json文件,該文件其它項目依賴該項目進行application.yml配置文件中的提示來源,當然也可以直接在META-INF下新建spring-configuration-metadata.json自己配置提示信息。圖例:
在這裏插入圖片描述

什麼時候考慮定義一個starter

  • 常見的項目基本功能,如參數校驗、數據庫配置,放到maven-central管理
  • 企業內部常見功能特性,被其它項目廣泛依賴,如特有的鑑權方法,放到企業內部maven-central管理

總結

從以上步驟可以看出spring-boot-starter的配置十分簡單,簡化一下流程即爲:

  1. 添加@ConfigurationProperties以便生成application.yml提示
  2. 配置@EnableAutoConfiguration註解類,自動掃描package生成所需bean
  3. 添加spring.factories配置讓spring-boot-autoconfigure對當前項目進行AutoCOnfiguration

以上代碼全部源自個人開發的starter:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章