<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          重頭學(xué) || SpringBoot 2.7 自定義 Starter 方法又變了

          共 1363字,需瀏覽 3分鐘

           ·

          2022-05-24 18:23

          官方過期通知

          springboot 2.7 已經(jīng)標(biāo)記 spring.factories 加載自動(dòng)化配置方式為過期,springboot 3 中將完全移除原有方式,這也就意味著現(xiàn)有市面所有 spring-boot-starter 將無法適配 spring boot 3

          一、 spring.factories 是啥

          在 Spring 中也有一種類似 Java SPI 的加載機(jī)制。它在 META-INF/spring.factories 文件中配置接口的實(shí)現(xiàn)類名稱,然后在程序中讀取這些配置文件并實(shí)例化。

          這種自定義的 SPI 機(jī)制是 Spring Boot Starter 實(shí)現(xiàn)的基礎(chǔ)。即當(dāng)你依賴了某個(gè) Starter,那么該 Starter 就提供相關(guān)的類供加載,這些配置類負(fù)責(zé)特定的功能。如果你沒有依賴某個(gè) Starter,就不會(huì)加載相關(guān)的類。

          pig seata 自定配置示例

          二、新特性支持自動(dòng)配置分片

          2.1 為什么要支持配置分片

          我們以 mybatis-plus-boot-starter 為例,如下圖 spring.factories 配置很多幾乎所有的 spring config bean 都可以往這里放,對(duì)于開發(fā)者維護(hù)造成困難。

          • ② 環(huán)境配置處理器
          • ③ 自動(dòng)化配置類

          2.2 如何使用自動(dòng)配置分片功能

          創(chuàng)建 org.springframework.boot.autoconfigure.AutoConfiguration.imports 文件

          ├──?src
          │???└──?main
          │???????└──?resources
          │???????????├──?META-INF
          │???????????│???└──?spring
          │???????????│???????└──?org.springframework.boot.autoconfigure.AutoConfiguration.imports
          上文的common-seata 變更為此種方式

          2.3 配置分片的源碼分析

          • ① 兼容原來的 spring.factories 配置加載方式

          • ② 讀取分片配置 加載相關(guān)的類

          三、擴(kuò)展屬于自己的 Import SPI

          • pig[1] 定義 org.springframework.cloud.openfeign.FeignClient.imports 用于定義 feignclient (通過 SPI 機(jī)制注入 feignclient ,避免包規(guī)則不規(guī)范導(dǎo)致 feignclient 無法加載的問題)
          • 使用 ImportCandidates.load()

          四、更優(yōu)雅的處理配置分片 mica-auto

          如果你不喜歡配置這種繁瑣的 SPI 文件,可以來試驗(yàn)一下 mica-auto[2]

          最新版本可以基于 @AutoConfiguration 注解自動(dòng)生成并配置對(duì)應(yīng)的

          imports 文件

          mica-auto最新版本已適配

          參考資料

          [1]

          pig: https://github.com/pig-mesh/pig

          [2]

          mica-auto: https://github.com/lets-mica/mica-auto

          ??????????????????????????????????????????????????

          瀏覽 310
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  内射无码高清视频 | 免费国产视频 | 非洲黑人大吊操逼 | 欧美女孩性爱 | 日韩人妻在线免费观看 |