成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

怎么打造一個(gè)SpringBoot自定義的Starter

這篇文章主要講解了“怎么打造一個(gè)SpringBoot自定義的Starter”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“怎么打造一個(gè)SpringBoot自定義的Starter”吧!

這篇文章主要講解了“怎么打造一個(gè)SpringBoot自定義的Starter”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“怎么打造一個(gè)SpringBoot自定義的Starter”吧!

10年積累的成都網(wǎng)站建設(shè)、網(wǎng)站制作經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有自貢免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

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

任何的學(xué)習(xí)都是先從模仿開始的,為此,我們先來看看 mybatis-spring-boot-starter 的結(jié)構(gòu)。然后來對(duì)照著模仿一個(gè)。

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

 

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

 

你會(huì)發(fā)現(xiàn)里面有兩個(gè)重要的引用 spring-boot-autoconfigure 和 spring-boot-configuration-processor。

為什么關(guān)注這兩個(gè)呢?因?yàn)橹挥羞@兩個(gè)才是 Spring Boot 提供的,其他的都不是。

如果你還沒有發(fā)現(xiàn)規(guī)律,你可以在看看 spring-boot-starter-jdbc 的構(gòu)造??吹?starter 多了后,你會(huì)發(fā)現(xiàn),所有的 starter 中都引入了 spring-boot-configuration-processor 和 spring-boot-autoconfigure。

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

在 SpringBoot 的腦圖和源碼解讀中,我也說過 @SpringBootApplication 會(huì)拿到各個(gè) starter 中的 META-INF/spring.factories 中需要自動(dòng)配置的類的全類名。把自動(dòng)配置的類全名放入 ImportSelector 中,從而創(chuàng)建了自動(dòng)配置類,根據(jù)自動(dòng)配置類中的邏輯,進(jìn)行相應(yīng)的自動(dòng)配置。

因此,根據(jù)上面的簡(jiǎn)單解讀,下面我們就一起來動(dòng)手?jǐn)]一個(gè)自定義的 Starter。

先建一個(gè) xttblog-spring-boot-starter 的 Maven 項(xiàng)目,pom.xml 中的配置如下:

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

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

接下來,我們的自定義 starter 實(shí)現(xiàn)一個(gè)簡(jiǎn)單業(yè)務(wù)。輸入一個(gè)字符串,我們輸出:“業(yè)余草 say,hello字符串www.xttblog.com”。

然后定義 prefix 和 suffix 屬性類。

接下來就是最重要的自動(dòng)配置類。

再重復(fù)一下,這幾個(gè)關(guān)鍵的 @Conditional。

@ConditionalOnClass,當(dāng) classpath 下發(fā)現(xiàn)該類的情況下進(jìn)行自動(dòng)配置。

@ConditionalOnMissingBean,當(dāng) Spring Context 中不存在該 Bean 時(shí)。

@ConditionalOnProperty 當(dāng)配置文件中xttblog.hello.service=true時(shí)執(zhí)行。

最后,別忘記了 spring.factories。在 resources/META-INF/ 下創(chuàng)建 spring.factories 文件,內(nèi)容如下:

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

具體的測(cè)試過程,我就不貼了。大家自己動(dòng)手,收獲更大!

標(biāo)題名稱:怎么打造一個(gè)SpringBoot自定義的Starter
網(wǎng)址分享:http://jinyejixie.com/article44/socoee.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供GoogleApp設(shè)計(jì)、網(wǎng)站策劃用戶體驗(yàn)、品牌網(wǎng)站制作移動(dòng)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作
乐清市| 芮城县| 昌图县| 尖扎县| 仁怀市| 汾阳市| 德州市| 渭南市| 景东| 长宁区| 保康县| 雷州市| 黔江区| 富民县| 汨罗市| 宣汉县| 黎平县| 合山市| 梅州市| 巩义市| 五河县| 玉田县| 改则县| 龙山县| 扎赉特旗| 耿马| 广东省| 迁安市| 光泽县| 麦盖提县| 鲁甸县| 本溪市| 武义县| 宜君县| 枣强县| 吴川市| 锦屏县| 天水市| 平定县| 长岛县| 临朐县|