在Spring应用程序中,我连接到Postgres。对于特定的需求,我需要使用参数化的DriverClass,它是org.postgresql.Driver的子类。
如何使用参数化的DataSource构造driverClass对象?
DataSourceBuilder dataSourceBuilder = DataSourceBuilder.create();
dataSourceBuilder.driverClassName("com.apps.CustomPostgresqlDriver") // Not sure how to pass a string argument to its constructor
.build()客户驱动程序com.apps.CustomPostgresqlDriver的定义如下。
Public class CustomPostgresqlDriver implements Driver {
public void CustomPostgresqlDriver(String appParam){
....
}
...
}我看不出有任何选项可以用上面的1-Arg构造函数来实例化驱动程序(或者让Spring实例化)。示例:
new CustomPostgresqlDriver("my-app-db-param")
发布于 2020-10-10 02:04:42
您可以使用DataSourceBuilder来完成这个任务:第一个配置,application.yml中的两个不同的ds设置,如下所示:
spring:
datasource:
main:
driver-class-name: ${ds.driver}
url: ${ds.url}
username: ${ds.username}
password: ${ds.password}
hikari:
maximum-pool-size: ${ds.maximum.pool.size}
minimum-idle: ${ds.minimum.idle}
connection-timeout: 10000
connection-test-query: SELECT 1
read:
driver-class-name: ${ds.driver}
url: ${ds.read.url}
username: ${ds.read.username}
password: ${ds.read.password}
hikari:
maximum-pool-size: ${ds.read.maximum.pool.size}
minimum-idle: ${ds.read.minimum.idle}
connection-timeout: 10000
connection-test-query: SELECT 1第二种方法是向它们注入DataSourceBuilder,如下所示:
import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;
@Primary
@Bean
@ConfigurationProperties("spring.datasource.main")
public DataSource main() {
return DataSourceBuilder.create().build();
}
@Bean
@ConfigurationProperties("spring.datasource.read")
public DataSource read() {
return DataSourceBuilder.create().build();
}https://stackoverflow.com/questions/64288534
复制相似问题