中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么打造一個SpringBoot自定義的Starter

發布時間:2021-09-13 14:42:46 來源:億速云 閱讀:130 作者:chen 欄目:云計算

這篇文章主要講解了“怎么打造一個SpringBoot自定義的Starter”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“怎么打造一個SpringBoot自定義的Starter”吧!

SpringBoot 的 Starter 其實并沒有什么神奇的。只是最近很多人問起我,而且我的百度搜索指數告訴我,最近搜索 druid-spring-boot-starter 的人在增多。于是,我今天便給大家科普一下,如何自定義實現一個 SpringBoot 的 Starter。

任何的學習都是先從模仿開始的,為此,我們先來看看 mybatis-spring-boot-starter 的結構。然后來對照著模仿一個。

首先,我們打開 mybatis-spring-boot-starter 的 pom.xml 文件,你會發現在它引用的眾多 dependency 中有一個 mybatis-spring-boot-autoconfigure。其他的像 JDBC,Mybatis,Spring 都是非 starter 模式整合 Mybatis 必須的,可以忽略不看。

怎么打造一個SpringBoot自定義的Starter  

然后,我們順著 mybatis-spring-boot-autoconfigure 去看看它的 pom.xml 文件。

怎么打造一個SpringBoot自定義的Starter  

你會發現里面有兩個重要的引用 spring-boot-autoconfigure 和 spring-boot-configuration-processor。

為什么關注這兩個呢?因為只有這兩個才是 Spring Boot 提供的,其他的都不是。

如果你還沒有發現規律,你可以在看看 spring-boot-starter-jdbc 的構造。看的 starter 多了后,你會發現,所有的 starter 中都引入了 spring-boot-configuration-processor 和 spring-boot-autoconfigure。

除此之外,我前面的文章還說過,@Conditional 注解在 SpringBoot 中啟動承上啟下的作用。根據 @Conditional 引出來的 @ConditionalOnClass、@ConditionalOnMissingBean、@ConditionalOnProperty 等共同構成了一些根據選擇,按需配置。

在 SpringBoot 的腦圖和源碼解讀中,我也說過 @SpringBootApplication 會拿到各個 starter 中的 META-INF/spring.factories 中需要自動配置的類的全類名。把自動配置的類全名放入 ImportSelector 中,從而創建了自動配置類,根據自動配置類中的邏輯,進行相應的自動配置。

因此,根據上面的簡單解讀,下面我們就一起來動手擼一個自定義的 Starter。

先建一個 xttblog-spring-boot-starter 的 Maven 項目,pom.xml 中的配置如下:

怎么打造一個SpringBoot自定義的Starter

其中 spring-boot-configuration-processor 的作用是編譯時生成spring-configuration-metadata.json, 此文件主要給 IDE 使用,用于提示使用。如在intellij idea中,當配置此jar相關配置屬性在application.yml, 你可以用 ctlr+ 鼠標左鍵,IDE 會跳轉到你配置此屬性的類中。沒有 spring-boot-configuration-processor 不會出錯,但是沒有提示,不完美,所以,我們把它也加上。

另外,看我這個 Maven 項目的命名,xttblog-spring-boot-starter 符合 SpringBoot 的要求:{name}-spring-boot-starter。只有官方的 starter ,名字在后面。spring-boot-starter-{name},你可以看看上面我舉例的 mybatis 和 druid,都符合命名規范。

接下來,我們的自定義 starter 實現一個簡單業務。輸入一個字符串,我們輸出:“業余草 say,hello字符串www.xttblog.com”。

怎么打造一個SpringBoot自定義的Starter

然后定義 prefix 和 suffix 屬性類。

怎么打造一個SpringBoot自定義的Starter

接下來就是最重要的自動配置類。

怎么打造一個SpringBoot自定義的Starter

再重復一下,這幾個關鍵的 @Conditional。

  • @ConditionalOnClass,當 classpath 下發現該類的情況下進行自動配置。

  • @ConditionalOnMissingBean,當 Spring Context 中不存在該 Bean 時。

  • @ConditionalOnProperty 當配置文件中xttblog.hello.service=true時執行。

最后,別忘記了 spring.factories。在 resources/META-INF/ 下創建 spring.factories 文件,內容如下:

怎么打造一個SpringBoot自定義的Starter

最后,你可以運行 mvn:install 打包安裝,一個自定義的 Spring Boot Starter 便開發完成了。然后你在其他 SpringBoot 項目中就可以這樣使用 xttblog-spring-boot-starter。

怎么打造一個SpringBoot自定義的Starter

具體的測試過程,我就不貼了。大家自己動手,收獲更大!

感謝各位的閱讀,以上就是“怎么打造一個SpringBoot自定義的Starter”的內容了,經過本文的學習后,相信大家對怎么打造一個SpringBoot自定義的Starter這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

安溪县| 姜堰市| 台前县| 永安市| 江陵县| 阿巴嘎旗| 左云县| 湾仔区| 英德市| 翁牛特旗| 叶城县| 五大连池市| 晋江市| 潮州市| 乡城县| 民丰县| 邳州市| 平潭县| 分宜县| 信宜市| 新化县| 壶关县| 定兴县| 三河市| 滨海县| 怀仁县| 泾川县| 临沭县| 宁德市| 鄯善县| 关岭| 宜良县| 岚皋县| 靖西县| 黄冈市| 临江市| 五峰| 竹溪县| 乐都县| 巴东县| 田林县|