SpringBoot整合多数据源。

SpringBoot整合多数据源

一.分布式事务解决方案。

MQ推送、两端提交协议、automatic+jta。

SpringBoot整合多数据源:

配置多数据源:

SpringBoot整合多数据源。

注:这里我设置了指定时区,不然汇报如下错误。

SpringBoot整合多数据源。

配置数据库:

/**
 * @description: 配置test1数据库
 * @author: LiShun
 * @time: 2019/12/17 13:52
 */
@Configuration
@MapperScan(basePackages = "com.ls.user1", sqlSessionFactoryRef = "test1SqlSessionFactory")
public class DataSourelConfig {


    @Bean(name = "test1DataSource")
    @Primary
    @ConfigurationProperties(prefix = "spring.datasource.test1")
    public DataSource testDataSource() {
        return DataSourceBuilder.create().build();
    }

    /**
     *
     *
     * @description:  test1 sql会话工厂
     * @return:
     * @author: LiShun
     * @time: 2019/12/17 14:09
     */
    @Bean(name = "test1SqlSessionFactory")
    @Primary
    public SqlSessionFactory testSqlSessionFactory(@Qualifier("test1DataSource")DataSource dataSource)
            throws Exception {
        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
        bean.setDataSource(dataSource);
//    bean.setMapperLocations(
//          new PathMatchingResourcePatternResolver().getResources("classpath:mybatis/mapper/test2/*.xml"));
        return bean.getObject();
    }

    /**
     *
     *
     * @description:  test1 事务管理
     * @return:
     * @author: LiShun
     * @time: 2019/12/17 14:09
     */
    @Bean(name = "test1TransactionManager")
    @Primary
    public DataSourceTransactionManager testTransactionManager(@Qualifier("test1DataSource") DataSource dataSource) {
        return new DataSourceTransactionManager(dataSource);
    }

    @Bean(name = "test1SqlSessionTemplate")
    public SqlSessionTemplate testSqlSessionTemplate(
            @Qualifier("test1SqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
        return new SqlSessionTemplate(sqlSessionFactory);
    }

注:配置test2时,不需要加@Primary。在test1加@Primary主键,标识为单例模式,不然运行会报错。 

service:

SpringBoot整合多数据源。 

mapper:

SpringBoot整合多数据源。 

Controller:

SpringBoot整合多数据源。 

启动类:将controller、service、DataSource都注入到spring容器中

SpringBoot整合多数据源。

运行成功,查看数据库添加数据成功。