Java SpringBoot正在创建DynamicDataSource:请求的bean当前正在创建中:是否存在无法解析的循环引用?
是否存在无法解决的循环引用?我怎样才能修好它Java SpringBoot正在创建DynamicDataSource:请求的bean当前正在创建中:是否存在无法解析的循环引用?,java,spring,spring-boot,spring-data,Java,Spring,Spring Boot,Spring Data,是否存在无法解决的循环引用?我怎样才能修好它 谢谢你的回答 在您的例子中,dynamicDataSource创建依赖于其他两个beanslaveDataSource&masterDataSource。因此,您需要在beandynamicDataSource上添加@DependsOn,这指示Spring创建beandynamicDataSource也依赖于其他两个bean 因此,您的更新配置应如下所示: Error creating bean with name 'dynamicDataSourc
谢谢你的回答 在您的例子中,
dynamicDataSource
创建依赖于其他两个beanslaveDataSource
&masterDataSource
。因此,您需要在beandynamicDataSource
上添加@DependsOn
,这指示Spring创建beandynamicDataSource
也依赖于其他两个bean
因此,您的更新配置应如下所示:
Error creating bean with name 'dynamicDataSource': Requested bean is currently in creation: Is there an unresolvable circular reference?
@DependsOn({“masterDataSource”,“slaveDataSource”})
@Bean(name=“dynamicDataSource”)
公共数据源数据源(@Autowired@Qualifier(“masterDataSource”)数据源masterDataSource,@Autowired@Qualifier(“slaveDataSource”)数据源slaveDataSource){
DynamicDataSource DynamicDataSource=新的DynamicDataSource();
Map dataSourceMap=newhashmap();
dataSourceMap.put(“masterDataSource”,masterDataSource);
dataSourceMap.put(“slaveDataSource”,slaveDataSource);
dynamicDataSource.setTargetDataSources(dataSourceMap);
dynamicDataSource.setDefaultTargetDataSource(masterDataSource);
返回数据源;
}
更新
根据,
当前bean所依赖的bean。指定的任何bean都是
保证在这个bean之前由容器创建。习惯于
在bean不显式依赖于
另一种是通过属性或构造函数参数,而不是
取决于另一个bean初始化的副作用
或者要了解更多信息,请检查此项,在bean顶部提及@Order可能会解决此问题。 就像你提到的@Order(1),@Order(2)
或者通过将日志级别设置为在应用程序中调试来检查日志。属性请将完整的错误日志sadd@DependsOn({“masterDataSource”,“slaveDataSource”})上载到公共数据源数据源…@Afridi非常感谢,它现在正在工作。但是,我不明白为什么会有循环引用。
@Bean(name=“dynamicTransactionManager”)公共数据源TransactionManager masterTransactionManager(@Qualifier(“dynamicDataSource”)数据源dynamicDataSource)
dynamicTransactionManager
创建依赖于dynamicDataSource
Bean,但是我们不需要添加@DependsOn(“dynamicDataSource”)
。这让我很困惑
Error creating bean with name 'dynamicDataSource': Requested bean is currently in creation: Is there an unresolvable circular reference?
@DependsOn({"masterDataSource", "slaveDataSource"})
@Bean(name = "dynamicDataSource")
public DataSource dataSource(@Autowired @Qualifier("masterDataSource") DataSource masterDataSource, @Autowired @Qualifier("slaveDataSource") DataSource slaveDataSource) {
DynamicDataSource dynamicDataSource = new DynamicDataSource();
Map<Object, Object> dataSourceMap = new HashMap<>();
dataSourceMap.put("masterDataSource", masterDataSource);
dataSourceMap.put("slaveDataSource", slaveDataSource);
dynamicDataSource.setTargetDataSources(dataSourceMap);
dynamicDataSource.setDefaultTargetDataSource(masterDataSource);
return dynamicDataSource;
}