解决豆的周期三个数据源



查看此代码:

@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
└─────┘

unconment (***)使此代码正常。但是,我无法删除(***),因为它在application.properties中覆盖了Neccessary config。

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

您能解释一下为什么它会有所帮助吗?如果可以的解决方案还可以吗?也许在这种方法中有些错误。

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

从我的身边,我进行了很长时间的战斗,但在最后发现了datasourceautoconfiguration

的末尾。
@EnableAutoConfiguration(exclude = { DataSourceAutoConfiguration.class })

我遇到了同样的问题。在这个问题上:Spring Boot的DataSourceinitializer

上的循环依赖性错误

设置spring.datasource.initialize = false。希望这可以帮助您。

最新更新