您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“Spring5路徑匹配器PathPattern有什么用”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“Spring5路徑匹配器PathPattern有什么用”這篇文章吧。
PathPattern 對url地址匹配的處理更加快速,它和AntPathMatcher 主要差異如下:
如果在路徑的中間使用 ** 就會報錯;
@GetMapping("/funyi/**") public String act1() { return "/funyi/**"; }
的方式匹配請求路徑,同時可以匹配到多級路徑,并將獲取的值賦給 對應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
:Sping第一個版本(2013念)引入。
PathPattern
:Spring 5 引入,所在包:org.springframework.web.util.pattern.PathPattern,所屬模塊為spring-web。可見它專為Web設計的“工具”。
PathPattern去掉了Ant字樣,但保持了很好的向下兼容性:除了不支持將**寫在path中間之外(以消除歧義),其它的匹配規則從行為上均保持和AntPathMatcher一致,并且還新增了強大的{*pathVariable} 的支持。整體上可認為后者兼容了前者的功能。
PathPattern
性能比AntPathMatcher好。理論上pattern越復雜,PathPattern的優勢越明顯;
AntPathMatcher
可用于非Web環境,而PathPattern只適用于Web環境。所以PathPattern也不是能完全替代AntPathMatcher的。
內部實現原理上看,AntPathMatcher進行的是純字符串操作和比對;而PathPattern則對于任何一個字符串的pattern最終都會被解析為若干段的PathElement,這些PathElement以鏈式結構連接起來用以表示該pattern,形成一個對象數據,這種結構化的表示使得可讀性更強、更具靈活性,從而獲得更好的性能表現。
兩者簡單使用示例:
new AntPathMatcher().match("/api/v1/**", "/api/v1/2/3**"); new PathPatternParser().parse("/api/v1/**").matches(PathContainer.parsePath("/api/v1/2/3**")); //每一個pathPattern串對應一個PathPatternParser、每一個parsedPath串對應一個PathContainer
可能有小伙伴會說:在Service層,甚至Dao層我也可以正常使用PathPattern對象呀,何解?
這個問題就相當于:HttpServletRequest屬于web層專用組件,但你依舊可以將其傳到Service層,甚至Dao層供以使用,在編譯、運行時不會報錯。
以上是“Spring5路徑匹配器PathPattern有什么用”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。