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

Spring5路徑匹配器PathPattern解析

 更新時間:2021年11月24日 16:27:52   作者:生平無冕°  
這篇文章主要介紹了Spring5路徑匹配器PathPattern,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

Spring5路徑匹配器PathPattern

PathPattern 對url地址匹配的處理更加快速,它和AntPathMatcher 主要差異如下:

1.PathPattern 只支持結(jié)尾部分使用 **

如果在路徑的中間使用 ** 就會報錯;

@GetMapping("/funyi/**")
public String act1() {
    return "/funyi/**";
}

2.PathPattern 支持使用例如 {*path}

的方式匹配請求路徑,同時可以匹配到多級路徑,并將獲取的值賦給 對應(yīng)controller方法的形參path;

@GetMapping("/funyi/{*path}")
public void act2(@PathVariable String path) {
    System.out.println("path = " + path);
}

SpringBoot 項目添加如下配置即可開啟PathPattern:

@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Override
    public void configurePathMatch(PathMatchConfigurer configurer) {
        configurer.setPatternParser(new PathPatternParser());
    }
}

路徑匹配工具(AntPathMatcher vs PathPattern)

  • AntPathMatcher:Sping第一個版本(2013念)引入。
  • PathPattern:Spring 5 引入,所在包:org.springframework.web.util.pattern.PathPattern,所屬模塊為spring-web??梢娝鼘閃eb設(shè)計的“工具”。

PathPattern去掉了Ant字樣,但保持了很好的向下兼容性:除了不支持將**寫在path中間之外(以消除歧義),其它的匹配規(guī)則從行為上均保持和AntPathMatcher一致,并且還新增了強大的{*pathVariable} 的支持。整體上可認(rèn)為后者兼容了前者的功能。

  • PathPattern性能比AntPathMatcher好。理論上pattern越復(fù)雜,PathPattern的優(yōu)勢越明顯;
  • AntPathMatcher可用于非Web環(huán)境,而PathPattern只適用于Web環(huán)境。所以PathPattern也不是能完全替代AntPathMatcher的。

內(nèi)部實現(xiàn)原理上看,AntPathMatcher進行的是純字符串操作和比對;而PathPattern則對于任何一個字符串的pattern最終都會被解析為若干段的PathElement,這些PathElement以鏈?zhǔn)浇Y(jié)構(gòu)連接起來用以表示該pattern,形成一個對象數(shù)據(jù),這種結(jié)構(gòu)化的表示使得可讀性更強、更具靈活性,從而獲得更好的性能表現(xiàn)。

兩者簡單使用示例:

new AntPathMatcher().match("/api/v1/**", "/api/v1/2/3**");
new PathPatternParser().parse("/api/v1/**").matches(PathContainer.parsePath("/api/v1/2/3**")); 
//每一個pathPattern串對應(yīng)一個PathPatternParser、每一個parsedPath串對應(yīng)一個PathContainer

可能有小伙伴會說:在Service層,甚至Dao層我也可以正常使用PathPattern對象呀,何解?

這個問題就相當(dāng)于:HttpServletRequest屬于web層專用組件,但你依舊可以將其傳到Service層,甚至Dao層供以使用,在編譯、運行時不會報錯。但你可深入思考下,這么做合適嗎?

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Spring AbstractRoutingDatasource 動態(tài)數(shù)據(jù)源的實例講解

    Spring AbstractRoutingDatasource 動態(tài)數(shù)據(jù)源的實例講解

    本文介紹如何使用 Spring AbstractRoutingDatasource 基于上下文動態(tài)切換數(shù)據(jù)源,因此我們會讓查找數(shù)據(jù)源邏輯獨立于數(shù)據(jù)訪問之外
    2021-07-07
  • Java 調(diào)整格式日志輸出

    Java 調(diào)整格式日志輸出

    本文主要介紹Java 的日志輸出格式,在開發(fā)java的時候會經(jīng)??慈罩具M行調(diào)試或者查看錯誤,這里給大家介紹日志輸出調(diào)整格式,以便大家看日志的時候更加方便,
    2016-07-07
  • PowerJob的TimingStrategyHandler工作流程源碼解讀

    PowerJob的TimingStrategyHandler工作流程源碼解讀

    這篇文章主要為大家介紹了PowerJob的TimingStrategyHandler工作流程源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2024-01-01
  • ?Spring?中?Bean?的生命周期詳解

    ?Spring?中?Bean?的生命周期詳解

    這篇文章主要介紹了Spring中Bean的生命周期詳解,Java中的公共類稱之為Bean或Java?Bean,而Spring中的Bean指的是將對象的生命周期
    2022-09-09
  • Java生成pdf文件或jpg圖片的案例講解

    Java生成pdf文件或jpg圖片的案例講解

    這篇文章主要介紹了Java生成pdf文件或jpg圖片的案例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • IDEA中的pom.xml文件無法識別問題及解決

    IDEA中的pom.xml文件無法識別問題及解決

    這篇文章主要介紹了IDEA中的pom.xml文件無法識別問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • 基于javascript實現(xiàn)獲取最短路徑算法代碼實例

    基于javascript實現(xiàn)獲取最短路徑算法代碼實例

    這篇文章主要介紹了基于javascript實現(xiàn)獲取最短路徑算法代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-02-02
  • 如何基于ThreadPoolExecutor創(chuàng)建線程池并操作

    如何基于ThreadPoolExecutor創(chuàng)建線程池并操作

    這篇文章主要介紹了如何基于ThreadPoolExecutor創(chuàng)建線程池并操作,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-11-11
  • Java使用注解實現(xiàn)BigDecimal的四舍五入

    Java使用注解實現(xiàn)BigDecimal的四舍五入

    BigDecimal是Java中的一個類,位于java.math包中,它提供了任意精度的有符號十進制數(shù)字的表示,以及對這些數(shù)字進行算術(shù)運算的方法,本文介紹了Java使用注解實現(xiàn)BigDecimal的四舍五入的相關(guān)知識,需要的朋友可以參考下
    2024-09-09
  • java開發(fā)https請求ssl不受信任問題解決方法

    java開發(fā)https請求ssl不受信任問題解決方法

    這篇文章主要介紹了java開發(fā)https請求ssl不受信任問題解決方法,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01

最新評論

碌曲县| 淮阳县| 霍林郭勒市| 永仁县| 上饶市| 乃东县| 宜川县| 昭平县| 额敏县| 广德县| 清流县| 光泽县| 闽清县| 庆元县| 内乡县| 六安市| 全南县| 永和县| 海晏县| 江门市| 阳朔县| 罗城| 梨树县| 多伦县| 广丰县| 吕梁市| 五家渠市| 安康市| 常宁市| 新沂市| 得荣县| 玉山县| 高陵县| 巫溪县| 乐安县| 金昌市| 普陀区| 浏阳市| 嘉荫县| 长兴县| 贵溪市|