【Java报错】多数据源mapper异常more than one `primary` bean found among candidates: [sqlSessionFactory] 问题分析解决
生活随笔
收集整理的這篇文章主要介紹了
【Java报错】多数据源mapper异常more than one `primary` bean found among candidates: [sqlSessionFactory] 问题分析解决
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 報錯分析
項目使用了多個數據源,但是沒有使用持久層框架,后期加入了 mybatis-plus 插件,啟動項目時報錯,信息如下:
2021-08-19 09:16:20 ERROR [,,,] [main] o.s.boot.SpringApplication - Application run failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'xxxComponent': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'xxxMapper' defined in file [E:\xxx\BaseMapper.class]: Unsatisfied dependency expressed through bean property 'sqlSessionFactory'; nested exception is org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type 'org.apache.ibatis.session.SqlSessionFactory' available: more than one 'primary' bean found among candidates: [sqlSessionFactory_greenplum, sqlSessionFactory_oracle]重要信息是 【more than one ‘primary’ bean found among candidates:
[sqlSessionFactory_greenplum, sqlSessionFactory_oracle]】 我看了一下項目的編碼信息,如下【確實是2個 ?? 】:
@Primary注解可以標注出【有多個候選者有資格自動裝配單值依賴項時,優先考慮的Bean對象】之前項目沒有報錯,說明 SqlSessionFactory 對象并不是自動裝配對象,也就是說可以去掉其中一個 @Primary 就能解決問題,但是你敢隨便去掉注解嗎?你敢嗎?🐶 反正我不敢 😅 只能尋求其他方法。
2. 問題解決
這里只貼出核心代碼:
@SpringBootApplication @MapperScan(basePackages = {"com.*.*.**.persistence"}, sqlSessionFactoryRef = "sqlSessionFactory_greenplum") @EnableScheduling public class SpringBootApplicationStart {}使用 basePackages 標注出你的 mapper 文件所在的文件夾,使用 sqlSessionFactoryRef 標注出你的 mapper 文件使用的 SqlSessionFactory 對象。
總結
以上是生活随笔為你收集整理的【Java报错】多数据源mapper异常more than one `primary` bean found among candidates: [sqlSessionFactory] 问题分析解决的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Java调试】通过SqlSession
- 下一篇: 【Java报错】mapper传入arra