java - 解决bean三个数据源的循环

标签 java spring datasource

看这段代码:

@ConfigurationProperties(prefix = "first.datasource")
@Bean
public DataSource dataSourceFIRST() {
    return DataSourceBuilder
            .create()
            .build();
}
@ConfigurationProperties(prefix = "second.datasource")
@Bean
public DataSource dataSourceSECOND {
    return DataSourceBuilder
            .create()
            .build();
}
@Primary
@Bean
public MyRoutingDataSource routingDataSource(){
    MyRoutingDataSource rDS= new MyRoutingDataSource ();
    rDS.setDefaultTargetDataSource(dataSourceFIRST);
    // some logic for config routing datasource (setting datasources)
    // and creating targed data source tDS
    //rDS.afterPropertiesSet(); (***)

    rDS.setTargetDataSources(tDS);
    return rDS;
}

获取错误:

┌─────┐
|  routingDataSource defined in App
↑     ↓
|  dataSourceFIRST defined in App
↑     ↓
|  dataSourceInitializer
└─────┘

取消注释 (***) 可以使这段代码正常运行。但是,我不能取消注释 (***) 因为它会覆盖 application.properties 中的必要配置。

然而,偶然我找到了解决方案(在我看来)。
我将第一个和第二个数据源注释为 @PostConstruct(在 @Bean 注释旁边 - 我没有删除此注释)。

你能解释一下为什么它有帮助吗?如果可以解决?也许这种方法有问题。

最佳答案

如果您想尝试不同的东西。

我这边折腾了半天,最后还是发现排除掉DataSourceAutoConfiguration类

@EnableAutoConfiguration(exclude = { DataSourceAutoConfiguration.class })

关于java - 解决bean三个数据源的循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41174193/

相关文章:

database - Grails:我可以切换案例数据库 url

java - HTTPURLConnection 不遵循从 HTTP 到 HTTPS 的重定向

java - 使用 SAX 解析 XML

spring - 单元测试 Spring ApplicationEvents - 事件正在发布但监听器没有触发?

java - 配置文件上的 Spring 自动配置顺序/优先级

server - 使用 Lucee Server 时遇到访问服务器管理页面的命令框问题

java - SWT中如何控制工具栏Item的位置?

java - 更改面孔映射后缺少资源

java - localeChangeInterceptor 不起作用

java - Spring & JDBCTemplate : are resources automatically closed when using the underlying datasource?