我關注了多篇關于創建多個資料源的文章,并在我的代碼中嘗試了相同的方法。但奇怪的是,spring boot 只初始化一個資料源而不是另一個。當我從代碼中洗掉其中任何一個時,另一個創建時沒有任何問題。任何的想法。
Bean 配置 -
@Configuration
public class DBConfiguration {
@Bean("dataSource")
@ConfigurationProperties(prefix = "p.datasource")
public DataSource pDataSource() {
System.out.println("**************************> dataSource");
return DataSourceBuilder.create().build();
}
@Bean("storeFrontDataSource")
@ConfigurationProperties(prefix = "c.datasource")
public DataSource cDataSource() {
System.out.println("**************************> storeFrontDataSource");
return DataSourceBuilder.create().build();
}
}
YML 檔案(為了保密,洗掉了一些資料)-
p:
datasource:
url: {some-url}
driver-class-name: com.ibm.db2.jcc.DB2Driver
username: abc
password: xyz
type: com.zaxxer.hikari.HikariDataSource
hikari:
schema:
connection-init-sql: select 1 from dual
minimum-idle: 25
maximum-pool-size: 100
idle-timeout: 10_000
max-lifetime: 20_000
connection-timeout: 1_000
validation-timeout: 500
c:
datasource:
url: {some-url}
driver-class-name: com.ibm.db2.jcc.DB2Driver
username: abc
password: xyz
type: com.zaxxer.hikari.HikariDataSource
hikari:
schema:
pool-name: uspo-cis-sf-pool
connection-init-sql: select 1 from dual
minimum-idle: 1
maximum-pool-size: 5
idle-timeout: 10_000
max-lifetime: 50_000
connection-timeout: 2_000
validation-timeout: 500
拋出錯誤 -
只找到“資料源”bean 而不是“storeFrontDataSource”bean。即使在控制臺上也只呼叫 System.out.println() 中的一個(即“資料源”),而其他的不列印。SpringBoot 甚至沒有初始化其他 bean 定義。
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.zaxxer.hikari.HikariDataSource' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Qualifier(value=storeFrontDataSource)}
at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1790) ~[spring-beans-5.3.3.jar:5.3.3]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1346) ~[spring-beans-5.3.3.jar:5.3.3]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1300) ~[spring-beans-5.3.3.jar:5.3.3]
at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:887) ~[spring-beans-5.3.3.jar:5.3.3]
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:791) ~[spring-beans-5.3.3.jar:5.3.3]
... 38 common frames omitted
注意 - 即使定義 @Primary 也無濟于事。無論如何, System.out.println() 都應該列印到控制臺。
uj5u.com熱心網友回復:
根據@tgdavies 的建議,我發現依賴庫中的一些類正在注入“HikariDataSource”而不是“DataSource”。修復它們后,問題得到解決。
uj5u.com熱心網友回復:
您需要創建用于創建多個資料源的客戶配置類并定義主資料源。
從baeldung檢查這個例子
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/317090.html
上一篇:型別引數“S”的推斷型別“S”不在其范圍內;應該擴展'com.data.assignment.domain.Post'
下一篇:org.springframework.core.convert.ConverterNotFoundException:找不到能夠從[java.lang.String]型別轉換為Model型別的轉換器
