在Spring MVC配置文件中我有這樣幾個部分:春季控制器兩次
<bean id="handler" class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"
p:alwaysUseFullPath="true"
p:contentNegotiationManager-ref="contentNegotiationManager"
p:useRegisteredSuffixPatternMatch="true" />
和
<mvc:annotation-driven />
<context:annotation-config/>
<context:component-scan base-package="com.tarhun.geo" use-default-filters="false">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
的問題是,控制器映射在日誌中註冊了兩次,也就是我看到每個映射消息重複:
annotation.RequestMappingHandlerMapping:217 - 映射「{[/ rest/company/{companyId}]」,遇見hods = [],params = [],heade ....
我覺得問題在那個自定義RequestMappingHandlerMapping
的定義中。因爲我刪除它 - 我的控制器只映射一次。但我仍然需要它,因爲如果我刪除它,我試圖調用API時得到異常:No mapping found...
您能否請建議一些?我也有其他Spring上下文配置文件,但我確定他們沒有加載控制器第二次(我甚至使用context:exclude=Controller
來防止這種情況)。
,還有應該是默認的映射處理。 –
@RomanC好的,我會嘗試刪除它。但是,我仍然有點困惑它是如何成爲問題的?據我瞭解所有這些做第一個配置節(我們聲明'handler' bean) - 它只是配置'RequestMappingHandlerMapping'單例。後來這個配置的bean應該在Spring內部使用。 – MyTitle