開(kāi)發(fā)之前可以先看看第三方starter的格式,命名方式都是 第三方名稱-spring-boot-starter
可以參考druid的開(kāi)發(fā)模式,一個(gè)模塊開(kāi)發(fā)完,其實(shí)也可以分模塊開(kāi)發(fā)
創(chuàng)建一個(gè)springboot模塊,模塊名稱就是starter名稱,例如我這里的模塊名稱為ip_spring_boot_starter
項(xiàng)目整體結(jié)構(gòu),注意包名要和目標(biāo)工程不一致,不然導(dǎo)入后,目標(biāo)工程掃包會(huì)掃到一起,出現(xiàn)其他錯(cuò)誤,IpProperties都自動(dòng)裝配上,報(bào)錯(cuò)出現(xiàn)不唯一的bean。
pom文件導(dǎo)入業(yè)務(wù)開(kāi)發(fā)所需要的依賴坐標(biāo)
二.starter工程業(yè)務(wù)開(kāi)發(fā)比如,我這次設(shè)計(jì)的業(yè)務(wù)是記錄系統(tǒng)訪客獨(dú)立id訪問(wèn)次數(shù),把開(kāi)發(fā)的業(yè)務(wù)寫(xiě)到service中,業(yè)務(wù)開(kāi)發(fā)根據(jù)目標(biāo)工程的需要來(lái)編寫(xiě),因人而異,這里不多說(shuō)明。
1.數(shù)據(jù)記錄的位置比如,目標(biāo)項(xiàng)目的方法需要實(shí)現(xiàn)該業(yè)務(wù),就需要在方法中加入bean.業(yè)務(wù)方法()來(lái)調(diào)用,如果很多方法都需要實(shí)現(xiàn)該業(yè)務(wù),不可能去每個(gè)方法里都加上這么一句代碼。這里用攔截器實(shí)現(xiàn),詳情如下
這里我們攔截器的功能是定義好了,但是spring并沒(méi)加載它,攔截器沒(méi)有起作用,下面需要注冊(cè)這個(gè)攔截器,在SpringMvcConfig中,做如下配置
知識(shí)點(diǎn):加上注解@Configuration的配置類,@Bean創(chuàng)建的是代理對(duì)象,直接拿容器中已注入的bean,調(diào)用時(shí)不會(huì)再new一個(gè)新的bean
①輸出頻率:多久輸出一次(默認(rèn)10秒輸出一次)
②數(shù)據(jù)特征:累計(jì)數(shù)據(jù) / 階段數(shù)據(jù)(默認(rèn)為累計(jì)數(shù)據(jù))
③數(shù)據(jù)格式:詳細(xì)模式 / 極簡(jiǎn)模式 (默認(rèn)為詳細(xì)模式)
目標(biāo)工程的yml配置文件中設(shè)置
ipProperties類上加上注解
至此ipProperties是獲取到了配置的屬性數(shù)據(jù),但是還沒(méi)有用到業(yè)務(wù)方法中,等于說(shuō)給的屬性值沒(méi)起作用,接下來(lái)就要把ipProperties的配置屬性值加到業(yè)務(wù)方法里,詳細(xì)如下
為了實(shí)現(xiàn)下圖這種添加配置時(shí)自動(dòng)提示的功能
業(yè)務(wù)工程的pom文件加入配置處理器的坐標(biāo)
但是注意,要實(shí)現(xiàn)有提示功能,需要這個(gè)坐標(biāo),但是給目標(biāo)工程使用時(shí),install的時(shí)候,需要把這個(gè)坐標(biāo)注釋掉,因?yàn)檫@樣jar包里有一組提示,文件里有一組提示,會(huì)出現(xiàn)兩組提示
簡(jiǎn)單點(diǎn)吧,就是開(kāi)發(fā)提示功能時(shí)導(dǎo)入這個(gè)坐標(biāo),開(kāi)發(fā)完成后,install的時(shí)候,注釋掉這個(gè)坐標(biāo)就行了
org.springframework.boot spring-boot-configuration-processor true
配置文件中的提示信息都來(lái)自ipProperties類里寫(xiě)的注釋,但是我們還想實(shí)現(xiàn)這種寫(xiě)到最后有可選模式,就需要在spring-configuration-metadata.json中添加點(diǎn)東西了,hints里默認(rèn)是沒(méi)有值的,我們需要添加可選的代碼。
添加內(nèi)容
"hints": [
{ "name": "tools.ip.model",
"values": [
{ "value": "detail",
"description": "詳細(xì)模式."
},
{ "value": "simple",
"description": "極簡(jiǎn)模式."
}
]
這里照搬druid的自動(dòng)配置文件,改一下即可,autoconfig包創(chuàng)建一個(gè)自動(dòng)配置類,在自動(dòng)配置類中加載業(yè)務(wù)類,將它定義成bean,可以直接@Import導(dǎo)入也可以使用@Bean。
自動(dòng)配置類
最后效果是加載該業(yè)務(wù)模塊時(shí),會(huì)加載spring.factories文件,加載spring.factories時(shí)會(huì)根據(jù)spring.factories里的全路徑類名加載autoconfig包下的自動(dòng)配置類,加載自動(dòng)配置類會(huì)加載類中定義的bean,即在目標(biāo)工程導(dǎo)入了業(yè)務(wù)的bean實(shí)現(xiàn)業(yè)務(wù)功能。
四.目標(biāo)工程導(dǎo)入starter1.先把業(yè)務(wù)工程install安裝到倉(cāng)庫(kù)中(右側(cè)maven,點(diǎn)擊業(yè)務(wù)工程,install),這樣目標(biāo)工程才能從倉(cāng)庫(kù)中導(dǎo)入
注意:業(yè)務(wù)工程的每次功能,代碼的更新就要clean再install,保證倉(cāng)庫(kù)里的是最新版,這樣目標(biāo)工程也能同步上。
2.目標(biāo)工程的pom文件導(dǎo)入坐標(biāo),例如下
com ip_spring_boot_starter 0.0.1-SNAPSHOT
導(dǎo)入的坐標(biāo)不清楚可以在業(yè)務(wù)工程的pom文件中看到,如下圖
若想在目標(biāo)工程中使用業(yè)務(wù)模塊的功能,除了導(dǎo)入坐標(biāo),還需要在使用業(yè)務(wù)模塊的位置,進(jìn)行自動(dòng)配置,例如下
@Autowired
private IpCountService ipCountService;//自動(dòng)配置
@GetMapping("{currentPage}/{pageSize}")
public Result getPage(@PathVariable int currentPage,@PathVariable int pageSize,Book book){ipCountService.count();//調(diào)用自定義模塊業(yè)務(wù)方法
IPageiPage = bookService.getPage(currentPage, pageSize,book);
//如果當(dāng)前頁(yè)碼值大于了總頁(yè)碼值,那么重新執(zhí)行查詢操作,使用大頁(yè)碼值作為當(dāng)前頁(yè)碼值
//適用場(chǎng)景: 就是第3頁(yè)只有一條數(shù)據(jù),刪除自動(dòng)刷新后,當(dāng)前頁(yè)仍然是3頁(yè),但大頁(yè)碼已經(jīng)變成2頁(yè)了,可以f12詳細(xì)看看
if (currentPage>iPage.getPages()){iPage=bookService.getPage((int)iPage.getPages(),pageSize,book);
}
Integer code=iPage!=null?Code.GET_OK:Code.GET_ERR;
String msg=iPage!=null?"success":"查詢失敗,請(qǐng)稍后再試";
return new Result(code,iPage,msg);
}
該業(yè)務(wù)實(shí)現(xiàn)的就是每次分頁(yè)查詢時(shí),獲取訪問(wèn)頁(yè)面的ip及訪問(wèn)次數(shù)
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
分享題目:SpringBoot自定義starter開(kāi)發(fā)詳細(xì)步驟說(shuō)明-創(chuàng)新互聯(lián)
文章URL:http://jinyejixie.com/article38/coshsp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護(hù)、動(dòng)態(tài)網(wǎng)站、定制開(kāi)發(fā)、響應(yīng)式網(wǎng)站、網(wǎng)站內(nèi)鏈、搜索引擎優(yōu)化
聲明:本網(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í)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容