Spring MVC 中使用 PathPattern 进行 URL 匹配
最近发布的 Spring Framework 5.3 M1 公告 中提到“Spring MVC 带有 `PathPattern` 解析,用于高效的 URL 匹配”。这篇文章将对此进行更详细的解释。
概述
在 Spring 应用程序中,`AntPathMatcher` 用于识别 Spring 配置中的类路径、文件系统、远程和其他资源。它也一直用于 Spring MVC 中匹配 URL 路径。随着时间的推移,Web 应用程序中模式的数量和语法都在增长,`AntPathMatcher` 也在不断发展以满足这些需求,但一些痛点仍然没有得到解决。
-
在 Web 应用程序中,每个请求都需要多次匹配模式,因此任何性能和效率的提升都很重要。但是,`String` 模式匹配限制了可以实现的目标。
-
多年来,在多个匹配请求的模式中选择最具体的模式一直是一个挑战,没有简单的方法可以使其更可预测,而不会影响其他情况。
-
将 `String` 路径与 `String` 模式匹配使得难以避免 URI 编码问题。例如,是否应该先解码传入的路径,然后再进行匹配?这样允许声明模式本身不包含编码字符,但是如果请求路径包含 `%2F` 或 `%3B`(分别为 `/` 和 `;`)会怎样?一旦解码,这些字符就会改变路径的结构,从而难以可靠地匹配。我们可以通过 `UrlPathHelper#urlDecode` 保留请求路径的编码……