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

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

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

前言

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

在這里插入圖片描述

具體實現(xiàn)

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

application.properties

api-package = com.coisini.springbootlearn.controller

自動補全路由前綴處理類

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 自動補全路由前綴處理類
 *      RequestMappingHandlerMapping 負責(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;
    }

}

自動補全路由前綴配置類

AutoPrefixConfiguration.java

/**
 * @Description 自動補全路由前綴配置類
 * 通過接口的形式主動發(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();
    }
}

測試類

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

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

}

測試

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

在這里插入圖片描述

訪問結(jié)果

在這里插入圖片描述

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

在這里插入圖片描述

訪問結(jié)果

在這里插入圖片描述

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

相關(guān)文章

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

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

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

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

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

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

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

    詳解RocketMQ中的消費者啟動與消費流程分析

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

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

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

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

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

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

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

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

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

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

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

    Jvisualvm監(jiān)控遠程SpringBoot項目的過程詳解

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

最新評論

民丰县| 新沂市| 双柏县| 沿河| 沧源| 自治县| 本溪| 自治县| 延寿县| 和硕县| 东兰县| 马鞍山市| 宣威市| 宁武县| 扶沟县| 衡阳县| 虹口区| 岱山县| 宁城县| 新余市| 无锡市| 中江县| 西宁市| 昭通市| 镇江市| 麻城市| 津南区| 巧家县| 宜黄县| 涟水县| 奇台县| 大冶市| 丰城市| 石屏县| 延寿县| 田阳县| 丁青县| 灌云县| 溆浦县| 石渠县| 丰台区|