java - 如何更正 Spring MVC RequestMapping 顺序?

标签 java spring spring-mvc

我有一个使用以下 RequestMapping 运行的现有 Spring MVC 服务。

@RequestMapping(value = "{user}/**", method = RequestMethod.GET)

我现在需要使用以下 RequestMapping 向同一个 Controller 添加一个新方法。

@RequestMapping(value = "api/{user}/**", method = RequestMethod.GET)

当我针对新 URL 进行测试时,Spring 总是选择第一个函数,以便这个 第二个功能无法访问。

无论如何,我可以让 Spring 使用我的新“api”方法吗?我能想到的唯一选择是在我的 web.xml 中创建一个新的 Java servlet,但我想做一些更简单的事情。我确实尝试使用 @Controller@Controller("api") 制作两个不同的 Controller ,但这并没有解决问题。

最佳答案

假设您的 user 参数是 String,Spring 假设您已经为用户调用了 api

有几种方法可以解决这个问题。第一个(也是最好的)是使您的请求映射更窄:完全指定映射,而不是依赖末尾的“**”。

第二种方法是禁止“api”用户,使用regex在你的映射中。像下面这样的东西应该可以工作:

@RequestMapping(value = "{user:[^a][^p][^i]}/**", method = RequestMethod.GET)

关于java - 如何更正 Spring MVC RequestMapping 顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22410609/

相关文章:

java - 过滤 Guava Multimap

java - 返回InputStream时生成swagger文档

java - 通过 session 将属性从一个 Portlet 传递到另一个 Portlet

java - 无法覆盖 Spring-MVC 中的 ConstraintValidator 默认消息

java - 手动加载 native 库以规避限制性环境

java - 如何控制 Google Android map 上 OverlayItem 的大小?

带有 httpServer 的 Java 应用程序在退出前挂起 45 秒

java - 如何使用 IntelliJ 在特定于环境的运行时配置之间轻松切换?

java - Spring Converter 复杂对象

java - Spring接口(interface)注入(inject)示例