You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring框架升级后出现请求映射冲突问题求助

问题根源

你遇到的映射冲突,本质是同一个控制器类被创建了两个Bean实例:

  • 一个是Spring通过组件扫描,识别LoginController上的@Controller注解自动生成的loginController Bean;
  • 另一个是你在ApplicationContext-security.xml里手动配置的customUserDetailsService2 Bean,它的class指定为LoginController。

这两个实例都带有相同的请求映射方法(比如loginRedirect(ModelMap)),Spring新版本对请求映射的唯一性校验更严格,所以直接抛出了Ambiguous mapping错误。旧版本Spring可能没有强制执行这个校验,因此之前能正常运行。

修复方案
  1. 职责分离,避免控制器兼任UserDetailsService
    UserDetailsService的核心职责是处理用户认证的数据源逻辑,而控制器负责请求转发和视图渲染,两者职责完全不同。你应该创建一个独立的类实现UserDetailsService接口,把认证相关逻辑移到这个类里,然后在ApplicationContext-security.xml中配置这个新类作为customUserDetailsService2的Bean。

  2. 移除重复的Bean定义
    删掉ApplicationContext-security.xml中class为LoginController的customUserDetailsService2配置,确保LoginController只有一个实例(由@Controller注解自动创建)。

  3. 验证组件扫描范围
    检查Spring的组件扫描配置,确保没有重复扫描LoginController所在的包,避免意外创建多个实例。

内容的提问来源于stack exchange,提问作者MonkeySleeve

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 10:44:50