如何通过参数值拆分Spring MVC请求映射

在Spring MVC 3中,我想用两个不同的控制器类来处理相同的url – 取决于url参数的值。 @RequestMapping注释甚至有这样的字段: params ,我认为以下是两个不同的映射(我在类级别使用映射):

@RequestMapping(value = "/myurl", params = "name=val1") 

 @RequestMapping(value = "/myurl", params = "name=val2") 

但事实并非如此。 Spring为/ myurl的控制器已经映射的第二种情况抛出exception(通过第一种情况)。

是否有一些准确的解决方案来按参数拆分请求映射? 可能正在扩展@RequestMapping或使用代理作为控制器并根据参数调用不同的控制器…有什么想法吗?

更新这可以工作但只在方法级别,而不是在类级别…这将:

 @Controller @RequestMapping(value = "/myurl") public class Class123 { @RequestMapping(value = {"edit.htm"}, params = "src=1") public String open1(Map map) throws Exception {....} @RequestMapping(value = {"edit.htm"}, params = "src=2") public String open2(Map map) throws Exception {....} } 

这不会:

 @Controller @RequestMapping(value = "/myurl", params = "src=1") public class Class123_1 { @RequestMapping(value = {"edit.htm"}) public String open(Map map) throws Exception {....} } @Controller @RequestMapping(value = "/myurl", params = "src=2") public class Class123_2 { @RequestMapping(value = {"edit.htm"}) public String open(Map map) throws Exception {....} } 

我想在不同的类中分割逻辑。

这听起来像使用RequestMappingHandlerMapping(Spring 3.1中的新增内容)和DefaultAnnotationHandlerMapping(由RequestMappingHandlerMapping替换的类)之间的区别。