最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot根據(jù)目錄結(jié)構(gòu)自動(dòng)生成路由前綴的實(shí)現(xiàn)代碼

 更新時(shí)間:2021年08月11日 15:28:45   作者:Maggieq8324  
本文介紹如何根據(jù)目錄結(jié)構(gòu)給RequestMapping添加路由前綴,具體實(shí)現(xiàn)方法,本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧

前言

本文介紹如何根據(jù)目錄結(jié)構(gòu)給RequestMapping添加路由前綴(覆蓋RequestMappingHandlerMapping中的getMappingForMethod方法,修改其中的Url),如下圖的實(shí)際訪問路徑為:/v1/test/test。

在這里插入圖片描述

具體實(shí)現(xiàn)

配置文件指定基礎(chǔ)包

application.properties

api-package = com.coisini.springbootlearn.controller

自動(dòng)補(bǔ)全路由前綴處理類

AutoPrefixUrlMapping.java

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.servlet.mvc.method.RequestMappingInfo;
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
import java.lang.reflect.Method;
import java.util.Objects;

/**
 * @Description 自動(dòng)補(bǔ)全路由前綴處理類
 *      RequestMappingHandlerMapping 負(fù)責(zé)處理標(biāo)注了@RequestMapping的控制器
 * @author coisini
 * @date Aug 10, 2021
 * @Version 1.0
 */
public class AutoPrefixUrlMapping extends RequestMappingHandlerMapping {

    /**
     * 讀取基礎(chǔ)包配置
     */
    @Value("${api-package}")
    private String bathApiPackagePath;

    /**
     * 重寫方法路由獲取
     * @param method
     * @param handlerType
     * @return
     */
    @Override
    protected RequestMappingInfo getMappingForMethod(Method method, Class<?> handlerType) {
        RequestMappingInfo mappingInfo = super.getMappingForMethod(method, handlerType);
        if (Objects.nonNull(mappingInfo)) {
            String prefix = this.getPrefix(handlerType);
            /**
             * RequestMappingInfo.paths(prefix).build() 根據(jù)前綴生成mappingInfo
             * combine(mappingInfo) 拼接原來的mappingInfo
             */
            return RequestMappingInfo.paths(prefix).build().combine(mappingInfo);
        }

        return mappingInfo;
    }

    /**
     * 獲取方法路由前綴
     * @param handleType
     * @return
     */
    private String getPrefix(Class<?> handleType) {
        String packageName = handleType.getPackage().getName();
        String dotPath = packageName.replace(this.bathApiPackagePath, "").replace(".","/");
        return dotPath;
    }

}

自動(dòng)補(bǔ)全路由前綴配置類

AutoPrefixConfiguration.java

/**
 * @Description 自動(dòng)補(bǔ)全路由前綴配置類
 * 通過接口的形式主動(dòng)發(fā)現(xiàn)
 * @author coisini
 * @date Aug 10, 2021
 * @Version 1.0
 */
@Component
public class AutoPrefixConfiguration implements WebMvcRegistrations {
    @Override
    public RequestMappingHandlerMapping getRequestMappingHandlerMapping() {
        return new AutoPrefixUrlMapping();
    }
}

測(cè)試類

@RestController
@RequestMapping("/test")
public class TestController {

    @GetMapping(value = "/test")
    public String test(){
        return "hello";
    }

}

測(cè)試

目錄結(jié)構(gòu)如下

在這里插入圖片描述

訪問結(jié)果

在這里插入圖片描述

目錄結(jié)構(gòu)變更

在這里插入圖片描述

訪問結(jié)果

在這里插入圖片描述

到此這篇關(guān)于SpringBoot - 根據(jù)目錄結(jié)構(gòu)自動(dòng)生成路由前綴的文章就介紹到這了,更多相關(guān)SpringBoot目錄結(jié)構(gòu)路由前綴內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot項(xiàng)目中獲取IP地址的實(shí)現(xiàn)示例

    SpringBoot項(xiàng)目中獲取IP地址的實(shí)現(xiàn)示例

    OkHttp是一個(gè)由Square開發(fā)的高效、現(xiàn)代的HTTP客戶端庫,本文主要介紹了SpringBoot項(xiàng)目中獲取IP地址的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-08-08
  • 關(guān)于Spring中@Value注解使用和源碼分析

    關(guān)于Spring中@Value注解使用和源碼分析

    通過深入分析@Value注解的使用和源碼,本文詳細(xì)解釋了Spring如何解析@Value注解并為屬性賦值,首先,Spring會(huì)解析并收集所有被@Value注解修飾的屬性,這一過程依賴于AutowiredAnnotationBeanPostProcessor類
    2024-11-11
  • JAVA JSP頁面技術(shù)之EL表達(dá)式整理歸納總結(jié)

    JAVA JSP頁面技術(shù)之EL表達(dá)式整理歸納總結(jié)

    這篇文章主要介紹了java中JSP頁面技術(shù)之EL表達(dá)式概念作用以及語法等的使用,需要的朋友可以參考
    2017-04-04
  • 詳解RocketMQ中的消費(fèi)者啟動(dòng)與消費(fèi)流程分析

    詳解RocketMQ中的消費(fèi)者啟動(dòng)與消費(fèi)流程分析

    本文主要介紹了RocketMQ的消費(fèi)者啟動(dòng)流程,結(jié)合官方源碼和示例,一步步講述消費(fèi)者在啟動(dòng)和消息消費(fèi)中的的工作原理及內(nèi)容,并結(jié)合平時(shí)業(yè)務(wù)工作中,對(duì)我們所熟悉的順序、push/pull模式等進(jìn)行詳細(xì)分析,以及對(duì)于消息消費(fèi)失敗和重投帶來問題去進(jìn)行分析,需要的朋友可以參考下
    2022-07-07
  • Java中將異步調(diào)用轉(zhuǎn)為同步的五種實(shí)現(xiàn)方法

    Java中將異步調(diào)用轉(zhuǎn)為同步的五種實(shí)現(xiàn)方法

    本文介紹了將異步調(diào)用轉(zhuǎn)為同步阻塞模式的五種方法:wait/notify、ReentrantLock+Condition、Future、CountDownLatch和CyclicBarrier,每種方法都有其適用場(chǎng)景和核心機(jī)制,可以根據(jù)具體需求選擇合適的方法,需要的朋友可以參考下
    2025-02-02
  • redis統(tǒng)計(jì)APP在線人數(shù)的實(shí)例

    redis統(tǒng)計(jì)APP在線人數(shù)的實(shí)例

    這篇文章主要介紹了redis統(tǒng)計(jì)APP在線人數(shù)的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • 計(jì)算機(jī)編程語言發(fā)展史

    計(jì)算機(jī)編程語言發(fā)展史

    這篇文章主要介紹了Java計(jì)算機(jī)編程語言發(fā)展史,編程語言?可以簡(jiǎn)單的理解為一種計(jì)算機(jī)和人都能識(shí)別的語言。一種計(jì)算機(jī)語言讓程序員能夠準(zhǔn)確地定義計(jì)算機(jī)所需要使用的數(shù)據(jù),并精確地定義在不同情況下所應(yīng)當(dāng)采取的行動(dòng),下面詳細(xì)內(nèi)容,需要的小伙伴可以參考一下
    2022-01-01
  • Spring注解驅(qū)動(dòng)之@EventListener注解使用方式

    Spring注解驅(qū)動(dòng)之@EventListener注解使用方式

    這篇文章主要介紹了Spring注解驅(qū)動(dòng)之@EventListener注解使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • SpringMVC中使用@PathVariable綁定路由中的數(shù)組的方法

    SpringMVC中使用@PathVariable綁定路由中的數(shù)組的方法

    這篇文章主要介紹了SpringMVC中使用@PathVariable綁定路由中的數(shù)組的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Jvisualvm監(jiān)控遠(yuǎn)程SpringBoot項(xiàng)目的過程詳解

    Jvisualvm監(jiān)控遠(yuǎn)程SpringBoot項(xiàng)目的過程詳解

    這篇文章主要介紹了Jvisualvm監(jiān)控遠(yuǎn)程SpringBoot項(xiàng)目,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04

最新評(píng)論

黄平县| 赤水市| 永昌县| 双城市| 子长县| 溧阳市| 林周县| 河津市| 甘孜县| 新源县| 河津市| 乌兰浩特市| 洮南市| 竹溪县| 正安县| 乐昌市| 通海县| 酒泉市| 广宗县| 怀仁县| 汽车| 宁城县| 乌海市| 云林县| 宣汉县| 六枝特区| 元氏县| 杭锦旗| 彝良县| 七台河市| 民乐县| 韶山市| 杭州市| 嘉黎县| 鄂伦春自治旗| 华蓥市| 绥芬河市| 德钦县| 北京市| 霍邱县| 荆门市|