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

Spring Boot 3.2.x迁移时solRepository Bean名称冲突问题排查

Spring Boot 3.2迁移时SolRepository Bean冲突的成因

针对你遇到的ConflictingBeanDefinitionException,即使修改接口名称、指定@Repository名称后仍无法解决,核心成因可能有以下几点:

  • MyBatis扫描器误处理JPA Repository接口
    错误日志中出现mybatis-spring的ClassPathMapperScanner,说明MyBatis的Mapper扫描逻辑错误将你的SolRepository(JPA Repository接口)当成了MyBatis Mapper接口,试图为它创建Bean定义。而Spring Data JPA本身也会通过JpaRepositoryFactoryBean为该接口生成Bean,两者同名(solRepository)且类型不兼容,因此触发冲突。

  • Spring Boot 3.2扫描规则的变更
    Spring Boot 3.2.x对组件扫描、自动配置的范围做了调整,导致原本在3.1.x中不会重叠的JPA Repository扫描与MyBatis Mapper扫描范围出现重叠。同时你使用的mybatis-spring 3.0.3可能和Spring Boot 3.2.x存在兼容性细节问题,进一步放大了这个冲突。

  • 扫描注解的范围重叠配置
    如果项目中同时配置了@EnableJpaRepositories和@MapperScan,且两者的basePackages参数设置有重叠,就会导致同一个接口被两个扫描器重复处理。即使你修改接口名称或指定@Repository的name属性,只要扫描范围的重叠问题没解决,两个扫描器依然会针对新名称生成冲突的Bean定义。

你提供的错误日志:

org.springframework.context.annotation.ConflictingBeanDefinitionException: 
Annotation-specified bean name 'solRepository' for bean class [...repository.solRepository] 
conflicts with existing, non-compatible bean definition of the same name and class 
[org.springframework.data.jpa.repository.support.JpaRepositoryFactoryBean]
  at org.springframework.context.annotation.ClassPathBeanDefinitionScanner.checkCandidate(ClassPathBeanDefinitionScanner.java:361) ~[spring-context-6.1.5.jar:6.1.5]
  at org.mybatis.spring.mapper.ClassPathMapperScanner.checkCandidate(ClassPathMapperScanner.java:345) ~[mybatis-spring-3.0.3.jar:3.0.3]
...

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 20:25:04