java - Spring Controller 注册了两次

标签 java spring spring-mvc

在 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>

问题是 Controller 映射注册了两次,即在日志中我看到每个映射消息都是重复的:

annotation.RequestMappingHandlerMapping:217 - Mapped "{[/rest/company/{companyId}],methods=[],params=[],heade....

我认为自定义 RequestMappingHandlerMapping 定义存在问题。因为当我删除它时 - 我的 Controller 仅映射一次。但我仍然需要它,因为如果我删除它,我在尝试调用 API 时会遇到异常:未找到映射...

你能建议一下吗?

仅供引用,我还有其他 Spring 上下文配置文件,但我确信它们不会第二次加载 Controller (我什至使用 context:exclude=Controller 来防止这种情况)。

最佳答案

在您的 mvc 配置中,组件会被扫描两次,您不需要这样做。

在配置中,您可以设置注释驱动的配置,您的 xml 配置应如下所示。

<aop:aspectj-autoproxy />

<mvc:annotation-driven> 
    <mvc:message-converters>
         <bean class="org.springframework.http.converter.ResourceHttpMessageConverter"/>
        <bean class="org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter"/>
        <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/> 
    </mvc:message-converters>
</mvc:annotation-driven> 

<context:component-scan base-package="com.tarhun.geo" />

<!-- UI resources exclusions from servlet mapping -->
<mvc:resources location="/ui/" mapping="/ui/**"/>

如果您只想加载 Controller 、服务或存储库,则可以选择添加包含/排除过滤器

关于java - Spring Controller 注册了两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38056427/

相关文章:

java - Hibernate Criteria : nested exception is org. hibernate.QueryException:无法解析属性:

java - 如何将 null 发送到整数字段 - JAVA REST

java - TestNG [错误] 未找到测试套件。没有什么可运行的

java - 当连接数超过池的 maxSize 时,我的 Web 应用程序挂起

java - 回滚事务功能是否仅在抛出异常时才起作用?

templates - 从许多模板组成 Apache Tiles 2 布局

java - MITM 与 Netty 5.0 : Browser unable to receive full http response

java - 在 Alfresco Explorer 中将结果导出到 Excel

java - Autowired DAO 对象为 null Spring Boot

java - 如何将 Spring 状态机用于 Order 对象