Java 弹簧靴&x2B;mybatis动态数据源与AbstractRoutingDatasource
我想先连接到数据库,读取其他B、C、D信息,然后创建并使用B、C、D数据源 性质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
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();
...
}