我将一个大的Spring 3.0应用程序移植到Spring 3.2(是的,我知道)。应用结合了XML和注释配置以定义途径,例如:Spring MVC组合XML和注释控制器配置
servlet.xml中:
<context:annotation-config/>
<context:component-scan base-package="foo.bar" />
...
<mvc:annotation-driven />
...
<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
...
<property name="mappings">
<props>
<prop key="/booking/default.htm">booking.default</prop>
...
</props>
</property>
...
</bean>
<bean id="booking.default" class="foo.bar.BookingController">
...
</bean>
BookingController.java
@Controller
public class BookingController {
...
@RequestMapping(method = RequestMethod.GET)
public String handleRequest(...)
...
}
在Spring 3.0,其效果是将GET /booking/default.htm映射到BookingController的handleRequest方法,但是我一直无法在Spring 3.2中重新创建此行为。
春季3.2,看来,忽略了XML和意见与@RequestMapping(method = RequestMethod.GET)
一样注释每一个方法,用java.lang.IllegalStateException: Ambiguous mapping found.
中止在启动时有大量这样配置的方法。其中一些在基础库类中有@RequestMapping,我无法更改。
我可以通过将URL路径从XML配置移动到注释来解决它,但我想避免(由于各种原因)并复制Spring 3.0行为。
这可能吗?寻找答案尚未成功。