org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type 'javax.sql.DataSource' available: expected single matching bean but found 2: masterDataSource,slaveDataSourcejava
看異常提示這個類型」javax.sql.DataSource「的bean期待一個單例bean可是發現了2個:masterDataSource,slaveDataSource。看打印的堆棧:spring
如上,咱們發現有個DataSourceInitializer.init方法追蹤進去:sql
這裏就給了咱們一個靈感,DataSourceInitializer這個數據源初始化是spring boot自動配置類啓動的。以下圖spa
繼續追蹤異常:最終定位在DefaultListableBeanFactory.resolveNamedBean()中以下代碼塊:3d
如上圖第一,第二個箭頭分別取@Primary和@Priority2種註解註釋的bean,只要存在,就能夠獲取bean並返回。code
1 @ConfigurationProperties(prefix = "study.datasource.master") 2 @Bean(name = "masterDataSource") 3 @Primary 4 public DataSource masterDataSource() { 5 }
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})blog