自定義Spring Boot Starter

yesye發表於2021-09-09

在使用Spring Boot開發的時候,我們會用到各種各樣的Spring-boot-Starter,不過那些Starter都是常用的,在不同的公司,因不同的業務場景,內部的庫也不同,有時需要做一個自己的starter,方便後面加快開發速度。

知識點

  • @ConfigurationProperties starter的配置屬性
  • @EnableConfigurationProperties 啟用配置屬性
  • spring.factories 可以指定自動配置類
  • spring-configuration-metadata.json 配置屬性的補全功能

過程

做一下演示,內部的程式碼不方便公開。

  1. 新建XXXProperties類,這個類名可以自定義,以Properties為結尾是為了方便標識這個類是Properties功能。

比如RedisProperties
圖片描述

我們新建TestProperties,這裡我省略了getter和setter,自己寫的時候加上

@Data
@ConfigurationProperties(prefix = "test")
public class TestProperties {
    private String name;
    private String desc;

    private Nest nest;
    public static class Nest {
        private String nestName;
    }
}
  1. 新建真正的配置類,類名為TestAutoConfigurer,這個根據自己的選擇,建合適的類名

參考Redis的
圖片描述

我們自己的

@Configuration
@EnableConfigurationProperties(TestProperties.class)
public class TestAutoConfigurer {

    private TestProperties testProperties;

    public TestAutoConfigurer(TestProperties testProperties) {
        this.testProperties = testProperties;
    }

    ...
}
  1. 建立好上面兩個類之後,根據業務建立,以及配置的屬性就可以建立Bean了。一般會用到@conditonalOnMissingBean(xxBean.class)
    圖片描述

  2. 配置,執行並且測試
    配置檔案裡面
test:
  name: aihe
  nest:
    nestName: nestAihe

圖片描述

可以看到已經注入進來了。

  1. Spring Boot在啟動的時候會預設掃描當前包目錄下的所有內容,當前包下帶有Spring相關注解的都會生效。

假如我們的自動配置類,不在當前包下怎麼辦呢?
在resource目錄下新建這兩個檔案
圖片描述

  1. spring.factories指定自動配置類,這樣Spring Boot一定會啟用指定的配置類。
org.springframework.boot.autoconfigure.EnableAutoConfiguration=
me.aihe.ShiroCasAutoConfigurer
  1. spring-configuration-metadata.json用來做配置的時候自動補全的功能, 如圖所示的自動補全,spring-configuration-metadata.json這個檔案作用。
    圖片描述

這個檔案主要分為兩部分,一個groups一個properties,其餘的因為是json格式,比較容易理解,自己寫就好了

圖片描述

  1. 都寫好之後,就可以打包測試,供下次使用了。最後的檔案結構如下
    圖片描述

最後

主要介紹了下Spring Boot starter的簡單製作,感興趣的可以自己試試。

參考

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2041/viewspace-2806938/,如需轉載,請註明出處,否則將追究法律責任。

相關文章