SpringBoot整合多数据源。
SpringBoot整合多数据源
一.分布式事务解决方案。
MQ推送、两端提交协议、automatic+jta。
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:
mapper:
Controller:
启动类:将controller、service、DataSource都注入到spring容器中
运行成功,查看数据库添加数据成功。