gpt4 book ai didi

java - h2 数据库以及其他数据源

转载 作者:太空宇宙 更新时间:2023-11-04 09:33:06 25 4
gpt4 key购买 nike

我正在使用 Spring Boot 运行 h2 数据库。基本配置

spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.hibernate.ddl-auto=create
spring.h2.console.enabled=true
spring.h2.console.path=/h2-console

一切顺利。

现在我想在我的应用程序中定义另一个数据源 bean

    @Bean
@Qualifier("oracleDatasource")
public DataSource oracleDataSource(@Qualifier("oracleDBProperties") DataSourceProperties oracleDBProperties) {
return oracleDBProperties.initializeDataSourceBuilder().build();
}

@Bean
@ConfigurationProperties(prefix = "spring.oracle.datasource")
public DataSourceProperties oracleDBProperties() {
return new DataSourceProperties();
}
spring.oracle.datasource.url=jdbc:oracle:thin:url:db
spring.oracle.datasource.username=test
spring.oracle.datasource.password=test
spring.oracle.datasource.driver-class-name=oracle.jdbc.OracleDriver

oracle 数据源初始化成功,但这次 h2 配置被忽略。看起来定义另一个 DataSource bean 会抑制 spring 对 h2 的自动配置。

我怎样才能避免这种抑制,或者有没有办法像我为 oracle 所做的那样定义 h2?

我尝试为 h2 执行与 Oracle 相同类型的 bean 配置,但它似乎不起作用。

更新

解决了以下问题

    @Bean
@Primary
@ConfigurationProperties(prefix = "spring.h2.datasource")
public DataSourceProperties h2DBProperties() {
return new DataSourceProperties();
}

@Bean
@Primary
@Qualifier("h2Datasource")
public DataSource h2DataSource(@Qualifier("h2DBProperties") DataSourceProperties h2DBProperties) {
return h2DBProperties.initializeDataSourceBuilder().build();
}
spring.h2.datasource.url=jdbc:h2:mem:testdb
spring.h2.datasource.driverClassName=org.h2.Driver
spring.h2.datasource.username=sa
spring.h2.datasource.password=

添加@Primary注释并没有让任何东西抑制它。尽管如此,仍然不确定是否认为这是一个正确的解决方案。

最佳答案

关于java - h2 数据库以及其他数据源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56834317/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com