這是我的資料源配置:
@Bean(name = "database1")
@Primary
@ConfigurationProperties(prefix="database1.datasource")
public static DataSource primaryDataSource() {
return DataSourceBuilder.create().build();
}
它在@Configuration 類中配置。
這是我的 application.properties 的樣子:
database1.datasource.jdbc-url=jdbc:mysql://localhost:3306/dbpms
database1.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
database1.datasource.username=root
database1.datasource.password=
spring.jpa.hibernate.ddl-auto=update
database1.datasource.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL8Dialect
database1.datasource.initialize=true;
spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
此配置按預期作業。
嘗試從 primaryDataSource() 獲取連接時出現了我的問題:
primaryDataSource().getConnection;
這會引發以下例外:
Exception in thread "Thread-5" java.lang.IllegalArgumentException: dataSource or dataSourceClassName or jdbcUrl is required.
at com.zaxxer.hikari.HikariConfig.validate(HikariConfig.java:1029)
at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:109)
為什么我不能呼叫這個方法,因為我的資料源作業正常?
uj5u.com熱心網友回復:
另外從JRichardsz的回答中,我相信application.properties中URL的正確變數名是url,而不是jdbc-url。
本檔案中對此的參考
https://docs.spring.io/spring-boot/docs/current/reference/html/application-properties.html#application-properties.data.spring.datasource.url
uj5u.com熱心網友回復:
只需從 primaryDataSource() 方法宣告中洗掉靜態修飾符。它應該是這樣的:
@Bean(name = "database1")
@Primary
@ConfigurationProperties(prefix="database1.datasource")
public DataSource primaryDataSource() {
return DataSourceBuilder.create().build();
}
uj5u.com熱心網友回復:
如果你想訪問任何 spring bean,你只需要將它自動裝配到另一個 bean,而不是在配置類中呼叫方法:
@Autowired
DataSource datasource;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/373347.html
標籤:爪哇 春天 数据库 spring-jdbc hikaricp
