Java 弹簧靴&x2B;mybatis动态数据源与AbstractRoutingDatasource

Java 弹簧靴&x2B;mybatis动态数据源与AbstractRoutingDatasource,java,spring,spring-boot,Java,Spring,Spring Boot,我想先连接到数据库,读取其他B、C、D信息,然后创建并使用B、C、D数据源 性质 spring.datasource.driverClassName=org.mariadb.jdbc.Driver spring.datasource.url=url spring.datasource.username=name spring.datasource.password=pw spring.datasource.hikari.maximum-pool-size=40 A.配置 @Slf4j @Ser

我想先连接到数据库,读取其他B、C、D信息,然后创建并使用B、C、D数据源

性质

spring.datasource.driverClassName=org.mariadb.jdbc.Driver
spring.datasource.url=url
spring.datasource.username=name
spring.datasource.password=pw
spring.datasource.hikari.maximum-pool-size=40
A.配置

@Slf4j
@Service("AConfiguration")
@DependsOn("ADao")
public class AConfiguration {
    
 private List<dto> dbList;
   
 @Autowired
 private ADao aDao;
 
 @Bean
 public void init() {
  this.operationMode = configDao.getOperationMode();
  get B, C, D Database info
 }
.....getter, setter...
}
基于属性连接到数据库以获取数据库信息,并通过该信息创建bean。我想我会使用AbstractRoutingDatasource

换句话说 属性>自动创建SqlSessionFactory>获取数据库信息>创建bean(这是一个包含B、C、D数据源的abstractroutingdatasource对象)>使用abstractroutingdatasource

但是我得到了以下错误

说明:

应用程序上下文中某些bean的依赖关系形成一个循环:

┌─────┐
|  sqlSessionFactory defined in class path resource 
[org/mybatis/spring/boot/autoconfigure/MybatisAutoConfiguration.class] 
↑     ↓
|  ADaoI defined in file [...\ADaoI.class]
└─────┘
阿多

阿代伊

我已经痛苦了大约一个星期。请帮助我:(

public class RouteDataSourceConfig extends AbstractRoutingDataSource {
  
 @Override
 protected Object determineCurrentLookupKey() {
        return OperationContextHolder.getClientDatabase();
 }
}
┌─────┐
|  sqlSessionFactory defined in class path resource 
[org/mybatis/spring/boot/autoconfigure/MybatisAutoConfiguration.class] 
↑     ↓
|  ADaoI defined in file [...\ADaoI.class]
└─────┘
@Repository("ADao")
@DependsOn("ADaoI")
public class ADao {
 
 @Autowired 
 private ADaoI mapper;
 
 public int getMode() {
  return mapper.getMode();
 }
.....

}
@Repository("ADaoI")
@Mapper
public interface ADaoI {
 
 int getOperationMode();
 ...
}