无法使用数据源中的 getConnection()
Unable to use getConnection() from datasource
这是我的数据源配置:
@Bean(name = "database1")
@Primary
@ConfigurationProperties(prefix="database1.datasource")
public static DataSource primaryDataSource() {
return DataSourceBuilder.create().build();
}
在@Configuration中配置class。
这是我的 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)
既然我的数据源工作正常,为什么我不能调用这个方法?
如果你想访问任何 spring bean,你只需要将它自动装配到另一个 bean,而不是调用配置中的方法 类:
@Autowired
DataSource datasource;
此外,根据 JRichardsz 的回答,我认为 application.properties 中 URL 的正确变量名称是 url,而不是 jdbc-url。
在本文档中对此进行了引用
从 primaryDataSource() 方法声明中删除静态修饰符。它应该是这样的:
@Bean(name = "database1")
@Primary
@ConfigurationProperties(prefix="database1.datasource")
public DataSource primaryDataSource() {
return DataSourceBuilder.create().build();
}
这是我的数据源配置:
@Bean(name = "database1")
@Primary
@ConfigurationProperties(prefix="database1.datasource")
public static DataSource primaryDataSource() {
return DataSourceBuilder.create().build();
}
在@Configuration中配置class。
这是我的 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)
既然我的数据源工作正常,为什么我不能调用这个方法?
如果你想访问任何 spring bean,你只需要将它自动装配到另一个 bean,而不是调用配置中的方法 类:
@Autowired
DataSource datasource;
此外,根据 JRichardsz 的回答,我认为 application.properties 中 URL 的正确变量名称是 url,而不是 jdbc-url。
在本文档中对此进行了引用
从 primaryDataSource() 方法声明中删除静态修饰符。它应该是这样的:
@Bean(name = "database1")
@Primary
@ConfigurationProperties(prefix="database1.datasource")
public DataSource primaryDataSource() {
return DataSourceBuilder.create().build();
}