Java 是否可以使用不同的方法将相同的映射映射到两个不同的控制器?

Java 是否可以使用不同的方法将相同的映射映射到两个不同的控制器?,java,spring-mvc,Java,Spring Mvc,我的应用程序中有两个方法使用相同的请求映射和不同的(http)方法 @RequestMapping(value=“/method/{key}”,method=RequestMethod.GET) public void method1()引发IOException{ // ... } @RequestMapping(value=“/method/{key}”,method=RequestMethod.PUT) public void method2()引发IOException{ // ...

我的应用程序中有两个方法使用相同的请求映射和不同的(http)方法

@RequestMapping(value=“/method/{key}”,method=RequestMethod.GET)
public void method1()引发IOException{
// ...
}
@RequestMapping(value=“/method/{key}”,method=RequestMethod.PUT)
public void method2()引发IOException{
// ...
}
只要两种方法都在同一个控制器中定义,这种方法就可以完美地工作,但是,由于我使用的是公司框架,我需要它们位于两个不同的控制器中,当我启动应用程序时,我会出现以下错误:

原因:java.lang.IllegalStateException:无法将处理程序“MyController#0”映射到URL路径[/method/{key}]:已映射[class OtherController$$EnhancerByGlib$$54a955d]类型的处理程序。 位于org.springframework.web.servlet.handler.AbstractUrlHandlerMapping.registerHandler(AbstractUrlHandlerMapping.java:390) 位于org.springframework.web.servlet.handler.AbstractUrlHandlerMapping.registerHandler(AbstractUrlHandlerMapping.java:362) 位于org.springframework.web.servlet.handler.AbstractDetectingUrlHandlerMapping.detectHandlers(AbstractDetectingUrlHandlerMapping.java:82) 位于org.springframework.web.servlet.handler.AbstractDetectingUrlHandlerMapping.initApplicationContext(AbstractDetectingUrlHandlerMapping.java:58) 位于org.springframework.context.support.ApplicationObjectSupport.initApplicationContext(ApplicationObjectSupport.java:119) 位于org.springframework.web.context.support.WebApplicationObjectSupport.initApplicationContext(WebApplicationObjectSupport.java:72) 位于org.springframework.context.support.ApplicationObjectSupport.setApplicationContext(ApplicationObjectSupport.java:73) 位于org.springframework.context.support.ApplicationContextawareReprocessor.InvokeAwareInterface(ApplicationContextawareReprocessor.java:109) 在org.springframework.context.support.ApplicationContextawareReprocessor.postProcessBeforeInitialization(ApplicationContextawareReprocessor.java:88)上 在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:393)上 位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1415) 位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:518) ... 25多


是否有可能在不同的控制器中定义它们,或者我应该看看一些(可怕的)解决方法(比如重命名一个URL)?

从Spring 3.1开始,它应该可以正常工作(如果启用了新映射实现-如果使用
@EnableWebMvc
并且不手动声明任何
HandlerMapping
则默认启用)


在旧版本的Spring中,您必须将这些方法放在同一个控制器中。

修改迫使我在我们的框架中使用两个不同控制器的部分要比将所有使用MVC的内容迁移到新版本更容易。谢谢!小心,它是注释驱动的,而不是驱动程序。因为它只有一个字母,我无法理解编辑它。
@RequestMapping(value = "/method/{key}", method = RequestMethod.GET)
public void method1(<parameters>) throws IOException {
    // ...
}

@RequestMapping(value = "/method/{key}", method = RequestMethod.PUT)
public void method2(<parameters>) throws IOException {
    // ...
}