2017-01-23 95 views
0

我將一個大的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行爲。

這可能嗎?尋找答案尚未成功。

回答

0

UPDATE:

TL; DR:這是不可能的,從春季3.1起

讀一所以 「相關的問題」 鏈接: SpringMVC 3.0 to 3.1 migration of ControllerClassNameHandlerMapping

導致我: http://docs.spring.io/spring/docs/3.2.x/spring-framework-reference/html/mvc.html

其中包含摘錄:

新的支持類在Spring MVC的3.1

@RequestMapping方法...

也有幾件事情不再可能:

有:SimpleUrlHandlerMapping或者 BeanNameUrlHandlerMapping時首先選擇一個控制器和然後根據 @RequestMapping註釋縮小方法。

這解釋了我的問題。

相關問題