gpt4 book ai didi

java - Spring Controller 注册了两次

转载 作者:行者123 更新时间:2023-12-01 09:45:42 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com