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

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

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

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

開(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ù)記錄的位置

在這里插入圖片描述

2.功能的觸發(fā)

比如,目標(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

在這里插入圖片描述

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

①輸出頻率:多久輸出一次(默認(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ì)如下

在這里插入圖片描述

4.yml配置中的自動(dòng)提示

為了實(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.bootspring-boot-configuration-processortrue

在這里插入圖片描述

配置文件中的提示信息都來(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)模式."
        }
      ]

在這里插入圖片描述

三.自動(dòng)配置方式加載配置類

這里照搬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)入starter

1.先把業(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文件中看到,如下圖
在這里插入圖片描述

五.啟動(dòng)完成業(yè)務(wù)實(shí)現(xiàn)

若想在目標(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)

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