报错:
'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改了