如何修正Spring MVC RequestMapping命令?

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

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

我现在需要使用以下RequestMapping将新方法添加到同一个控制器。

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

当我测试新的URL时,Spring总是选择第一个函数,以便第二个函数不可访问。

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

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

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

第二种方法是在映射中使用正则表达式禁止“api”用户。 像下面这样的东西应该工作:

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