在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