java学习——springboot mybatis调用多个数据源引发的错误

报错:

'org.springframework.boot.autoconfigure.jdbc.DataSourceInitializerInvoker': Invocation of init method failed; nested exception is org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type 'javax.sql.DataSource' available: more than one 'primary' bean found among candidates: [mssqlDataSource, postgreDataSource]

从后往前复制的,加粗的是重点。

因为有多个数据源使用同一个mapper接口,但是都用@Primary,则会引起此错误。如图所示:

从上面两图可以看出都用了同一个mapper接口,都添加了@Primary。

解决方法:

解决方法有两种,一种是把其中一个数据源去掉@Primary,动态调用数据源,就是需要代码切换使用的数据源。

如果要同时使用两个数据源,那就用不同的mapper,相当于postgre用postgre部分的mapper,sqlserver用sqlserver部分的mapper,大家互不干扰,就算@primary也没事

如图所示,我将postgre的MapperScan改了

发布了111 篇原创文章 · 获赞 20 · 访问量 13万+

猜你喜欢

转载自blog.csdn.net/qq_23418043/article/details/82848625