1.问题起因
目前写SPringBoot引入多数据源路由
遇到了需要控制加载顺序的问题
@Configuration
@MapperScan(basePackages = "com.gaotianyue.dao")
public class DataSourceConfig {
第一步
@Bean
@ConfigurationProperties(prefix = "spring.datasource")
public DataSource dataSource1() {
return DataSourceBuilder.create().build();
}
@Bean
@ConfigurationProperties(prefix = "spring.datasource")
public DataSource dataSource2() {
return = DataSourceBuilder.create().build();
}
}
@Configuration
public class RoutingDataSourceConfig {
第二步
@Bean(name="rwDataSource")
public ReadWriteRoutingDataSource rwDataSource(@Qualifier("dataSource1") DataSource dataSource1, @Qualifier("dataSource2") DataSource dataSource2) {
ReadWriteRoutingDataSource ds = new ReadWriteRoutingDataSource();
Map<Object, Object> targetDataSources = new HashMap<>();
targetDataSources.put(Master.class, dataSource1);
targetDataSources.put(Slave.class, dataSource2);
ds.setTargetDataSources(targetDataSources);
ds.setDefaultTargetDataSource(dataSource1);//默认数据源
return ds;
}
第三部报错
@Bean
public SqlSessionFactory ds1SqlSessionFactory(@Qualifier("rwDataSource") ReadWriteRoutingDataSource dataSource) throws Exception {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(dataSource);
bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mappers/*.xml"));
return bean.getObject();
}
}
两段程序本来在一个类中
引用情况如下:
|----<>SqlSessionFactoryBean
|
|<>-- -- DataSource
| /|\
| |
|<>-- -- RWRoutingDataSoure
|
|<>---DataSource
启动后发现出现循环引用错误
单独保留DataSource RWRoutingDataSour