五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

三分鐘實(shí)戰(zhàn)手寫Spring Boot Starter

2023-02-24 11:25 作者:要寵你上天  | 我要投稿

1 背景#

在平時的開發(fā)中,開發(fā)的同學(xué)會把一些通用的方法,寫成一個工具類,例如日期轉(zhuǎn)換的,JSON轉(zhuǎn)換的等等,方便業(yè)務(wù)后續(xù)調(diào)用,使代碼更容易維護(hù)。

如果一些更常用的方法,例如鑒權(quán)的,加解密的等等,幾乎每個項(xiàng)目都會使用到,這時候開發(fā)的同學(xué)就會從以前的項(xiàng)目中再抄過來,隨著項(xiàng)目的增多,幾乎每個項(xiàng)目都有一份一模一樣的工具類。經(jīng)過技術(shù)評審決定,將這些工具類打包成jar包,后續(xù)的新項(xiàng)目可以直接以jar包的形式引入,重用就會變得非常的好。

由于項(xiàng)目本身是基于Spring Boot進(jìn)行開發(fā),jar包以Spring Boot Starter的方式發(fā)布似乎是不錯的選擇。

2 介紹#

Spring Boot Starter 和普通jar包的區(qū)別在于,Spring Boot Starter?更加靈活,提供了自動裝配的機(jī)制,以及可供用戶配置等。下面以?加解密作為例子,手寫一個?Spring Boot Starter?,從實(shí)戰(zhàn)到原理去了解它的工作過程。

3 創(chuàng)建項(xiàng)目#

創(chuàng)建一個Spring Boot 的項(xiàng)目,項(xiàng)目命名為digest-spring-boot-starter

spring官方的包命名為:spring-boot-starter-xxx

第三方包命名為:xxx-spring-boot-starter

pom.xml中引入依賴commons-codec(apache官方提供的加解密算法的工具包)

4 主體部分#

加密邏輯書寫,提供一個?Digest?接口,使用常用的?Md5和?Sha256摘要算法進(jìn)行加密實(shí)現(xiàn)。

如果需要用戶來指定使用哪種加密算法,需要在application.properties中添加一項(xiàng)配置:

digest.type=sha

創(chuàng)建一個配置類,拿到用戶配置的type:

日常開發(fā)中,比較常用的幾個注解為:

@ConditionalOnBean:當(dāng)容器中存在指定Bean的條件下

@ConditionalOnClass:當(dāng)類路徑匣有指定類的條件下

@ConditionalOnProperty:指定的屬性是否有指定的值

5 配置自動裝配#

在 resources 目錄下,創(chuàng)建一個文件夾名為?META-INF,創(chuàng)建一個文件名為spring.factories

這一步是固定寫法

由于我們自己開發(fā)的starter是沒有啟動類的,所以需要告訴引用 starter 的項(xiàng)目,需要去加載哪些類。

spring.factories中填寫:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.xiaofengstu.digest.conf.Config

注釋掉pom.xml中關(guān)于spring-boot-maven-plugin的部分,以至于后續(xù)執(zhí)行?mvn package?操作得到是一個標(biāo)準(zhǔn)的jar包。

再執(zhí)行mvn install?將?starter打包到本地倉庫中。

6 使用starter#

在需要的項(xiàng)目中引入剛剛打包好的starter

在代碼中直接注入?Digest?即可:

總結(jié)#

  1. spring boot 2.7+ 的版本,spring.factorys寫法稍有改動:

  1. 文件內(nèi)容,一行就是一個裝配類:

  1. 如果沒看明白的,可以參考一下?mybatis-plus-spring-boot-starter的寫法


三分鐘實(shí)戰(zhàn)手寫Spring Boot Starter的評論 (共 條)

分享到微博請遵守國家法律
双峰县| 邵武市| 茶陵县| 承德市| 芜湖市| 锡林郭勒盟| 屯门区| 温宿县| 新龙县| 吉林省| 鄂托克旗| 交城县| 南皮县| 海晏县| 涪陵区| 齐河县| 抚远县| 平邑县| 晋中市| 赤水市| 长岛县| 老河口市| 潜山县| 繁峙县| 柳州市| 北宁市| 施秉县| 盖州市| 阜阳市| 大宁县| 柘城县| 资讯 | 定兴县| 昂仁县| 新余市| 抚松县| 普宁市| 陇西县| 黎城县| 宣城市| 华阴市|