将 RequestMapping 从较旧的 Spring 迁移到 Spring 5 无法在开头替换 /**/

问题描述 投票:0回答:1

由于 Spring 升级到版本 5,我在将 Java 应用程序从 14 迁移到 17 时遇到问题。我遇到的问题如下:

我有一个带有

@RequestMapping(value = "/**/{[something:[^.]*}")

的控制器

应用程序似乎在本地主机上运行得很好,但是服务器上的某些路径构建错误,并且某些 JUnit 失败,抛出:

org.springframework.web.util.pattern.PatternParseException: No more pattern data allowed after {*...} or ** pattern element
。在这里阅读 spring 文档https://spring.io/blog/2020/06/30/url-matching-with-pathpattern-in-spring-mvc/我发现我们一开始就不能再使用
/**/
,并且只在最后才允许。

有没有办法仍然保持相同的行为并用等效的东西替换开头的 ** ?我将 AntPathMatcher 的文档保留在下面,因为 * 和 ** 之间存在差异,并且我使用

spring.mvc.pathmatch.matching-strategy=ANT_PATH_MATCHER
仍然使用 AntPathMatcher。 https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/util/AntPathMatcher.html

我还查看了以下示例,但没有成功。 https://www.baeldung.com/spring-5-mvc-url-matching

欢迎任何帮助/建议/忠告。谢谢!

java spring spring-boot migration
1个回答
0
投票

在文档中说

注意:模式和路径必须都是绝对的或必须都是相对的才能使两者匹配。因此,建议此实现的用户清理模式,以便在它们前面加上“/”前缀,因为这在使用它们的上下文中有意义。

您的请求映射中的路径是绝对路径,请检查失败的测试是通过相对路由还是绝对路由访问控制器。

© www.soinside.com 2019 - 2024. All rights reserved.