SpringBoot自定義starter開發(fā)詳細(xì)步驟說明-創(chuàng)新互聯(lián)

目錄
  • 一.starter工程創(chuàng)建
  • 二.starter工程業(yè)務(wù)開發(fā)
    • 1.數(shù)據(jù)記錄的位置
    • 2.功能的觸發(fā)
    • 3.業(yè)務(wù)的參數(shù)配置
    • 4.yml配置中的自動提示
  • 三.自動配置方式加載配置類
  • 四.目標(biāo)工程導(dǎo)入starter
  • 五.啟動完成業(yè)務(wù)實現(xiàn)

創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比青陽網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式青陽網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋青陽地區(qū)。費用合理售后完善,十載實體公司更值得信賴。一.starter工程創(chuàng)建

開發(fā)之前可以先看看第三方starter的格式,命名方式都是 第三方名稱-spring-boot-starter
可以參考druid的開發(fā)模式,一個模塊開發(fā)完,其實也可以分模塊開發(fā)
在這里插入圖片描述

創(chuàng)建一個springboot模塊,模塊名稱就是starter名稱,例如我這里的模塊名稱為ip_spring_boot_starter

項目整體結(jié)構(gòu),注意包名要和目標(biāo)工程不一致,不然導(dǎo)入后,目標(biāo)工程掃包會掃到一起,出現(xiàn)其他錯誤,IpProperties都自動裝配上,報錯出現(xiàn)不唯一的bean。

在這里插入圖片描述

pom文件導(dǎo)入業(yè)務(wù)開發(fā)所需要的依賴坐標(biāo)

二.starter工程業(yè)務(wù)開發(fā)

比如,我這次設(shè)計的業(yè)務(wù)是記錄系統(tǒng)訪客獨立id訪問次數(shù),把開發(fā)的業(yè)務(wù)寫到service中,業(yè)務(wù)開發(fā)根據(jù)目標(biāo)工程的需要來編寫,因人而異,這里不多說明。

1.數(shù)據(jù)記錄的位置

在這里插入圖片描述

2.功能的觸發(fā)

比如,目標(biāo)項目的方法需要實現(xiàn)該業(yè)務(wù),就需要在方法中加入bean.業(yè)務(wù)方法()來調(diào)用,如果很多方法都需要實現(xiàn)該業(yè)務(wù),不可能去每個方法里都加上這么一句代碼。這里用攔截器實現(xiàn),詳情如下
在這里插入圖片描述

這里我們攔截器的功能是定義好了,但是spring并沒加載它,攔截器沒有起作用,下面需要注冊這個攔截器,在SpringMvcConfig中,做如下配置

知識點:加上注解@Configuration的配置類,@Bean創(chuàng)建的是代理對象,直接拿容器中已注入的bean,調(diào)用時不會再new一個新的bean

在這里插入圖片描述

3.業(yè)務(wù)的參數(shù)配置

①輸出頻率:多久輸出一次(默認(rèn)10秒輸出一次)
②數(shù)據(jù)特征:累計數(shù)據(jù) / 階段數(shù)據(jù)(默認(rèn)為累計數(shù)據(jù))
③數(shù)據(jù)格式:詳細(xì)模式 / 極簡模式 (默認(rèn)為詳細(xì)模式)
在這里插入圖片描述

目標(biāo)工程的yml配置文件中設(shè)置

在這里插入圖片描述

ipProperties類上加上注解

在這里插入圖片描述

至此ipProperties是獲取到了配置的屬性數(shù)據(jù),但是還沒有用到業(yè)務(wù)方法中,等于說給的屬性值沒起作用,接下來就要把ipProperties的配置屬性值加到業(yè)務(wù)方法里,詳細(xì)如下

在這里插入圖片描述

4.yml配置中的自動提示

為了實現(xiàn)下圖這種添加配置時自動提示的功能
在這里插入圖片描述

業(yè)務(wù)工程的pom文件加入配置處理器的坐標(biāo)
但是注意,要實現(xiàn)有提示功能,需要這個坐標(biāo),但是給目標(biāo)工程使用時,install的時候,需要把這個坐標(biāo)注釋掉,因為這樣jar包里有一組提示,文件里有一組提示,會出現(xiàn)兩組提示

簡單點吧,就是開發(fā)提示功能時導(dǎo)入這個坐標(biāo),開發(fā)完成后,install的時候,注釋掉這個坐標(biāo)就行了

org.springframework.bootspring-boot-configuration-processortrue

在這里插入圖片描述

配置文件中的提示信息都來自ipProperties類里寫的注釋,但是我們還想實現(xiàn)這種寫到最后有可選模式,就需要在spring-configuration-metadata.json中添加點東西了,hints里默認(rèn)是沒有值的,我們需要添加可選的代碼。

在這里插入圖片描述

添加內(nèi)容

"hints": [
    {  "name": "tools.ip.model",
      "values": [
        {  "value": "detail",
          "description": "詳細(xì)模式."
        },
        {  "value": "simple",
          "description": "極簡模式."
        }
      ]

在這里插入圖片描述

三.自動配置方式加載配置類

這里照搬druid的自動配置文件,改一下即可,autoconfig包創(chuàng)建一個自動配置類,在自動配置類中加載業(yè)務(wù)類,將它定義成bean,可以直接@Import導(dǎo)入也可以使用@Bean。

在這里插入圖片描述
在這里插入圖片描述

自動配置類

在這里插入圖片描述

最后效果是加載該業(yè)務(wù)模塊時,會加載spring.factories文件,加載spring.factories時會根據(jù)spring.factories里的全路徑類名加載autoconfig包下的自動配置類,加載自動配置類會加載類中定義的bean,即在目標(biāo)工程導(dǎo)入了業(yè)務(wù)的bean實現(xiàn)業(yè)務(wù)功能。

四.目標(biāo)工程導(dǎo)入starter

1.先把業(yè)務(wù)工程install安裝到倉庫中(右側(cè)maven,點擊業(yè)務(wù)工程,install),這樣目標(biāo)工程才能從倉庫中導(dǎo)入

注意:業(yè)務(wù)工程的每次功能,代碼的更新就要clean再install,保證倉庫里的是最新版,這樣目標(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文件中看到,如下圖
在這里插入圖片描述

五.啟動完成業(yè)務(wù)實現(xiàn)

若想在目標(biāo)工程中使用業(yè)務(wù)模塊的功能,除了導(dǎo)入坐標(biāo),還需要在使用業(yè)務(wù)模塊的位置,進(jìn)行自動配置,例如下

@Autowired
    private IpCountService ipCountService;//自動配置
    
    @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)前頁碼值大于了總頁碼值,那么重新執(zhí)行查詢操作,使用大頁碼值作為當(dāng)前頁碼值
        //適用場景: 就是第3頁只有一條數(shù)據(jù),刪除自動刷新后,當(dāng)前頁仍然是3頁,但大頁碼已經(jīng)變成2頁了,可以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":"查詢失敗,請稍后再試";
        return new Result(code,iPage,msg);
    }

該業(yè)務(wù)實現(xiàn)的就是每次分頁查詢時,獲取訪問頁面的ip及訪問次數(shù)

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

分享題目:SpringBoot自定義starter開發(fā)詳細(xì)步驟說明-創(chuàng)新互聯(lián)
文章URL:http://muchs.cn/article38/coshsp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護(hù)動態(tài)網(wǎng)站、定制開發(fā)、響應(yīng)式網(wǎng)站網(wǎng)站內(nèi)鏈、搜索引擎優(yōu)化

廣告

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

手機(jī)網(wǎng)站建設(shè)