Spring boot (21)多数据源引起的循环引用和AutoConfigureAfter失效的问题

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值