SpringBoot整合多数据源

SpringBoot整合多数据源(分布式,微服务)
在一个项目中,有多个Jdbc连接
多数据源会产生的问题:事物管理、分包结构
在实际项目中,怎么搭建多数据源、区分数据源
举例:在一个项目中2个数据源test001,test002
1、分包结构(一般开发者使用多)
com.lly.test001----访问test001数据库
dao
service

com.lly.test002----访问test002数据库
dao
service
分布式事务解决方案:jta+automatic(传统项目)
2、使用注解方式
com.lly
dao
service
@datascousetest001(自定义注解)
public void test001{
}
@datascousetest002(自定义注解)
public void test002{
}

application.properties配置数据源



1、分包结构(一般开发者使用多)

#非系统默认的需要创建代码文件
spring.datasource.test1.driverClassName = com.mysql.jdbc.Driver
spring.datasource.test1.url = jdbc:mysql://localhost:3306/test001?useUnicode=true&characterEncoding=utf-8
spring.datasource.test1.username = root
spring.datasource.test1.password = root


spring.datasource.test2.driverClassName = com.mysql.jdbc.Driver
spring.datasource.test2.url = jdbc:mysql://localhost:3306/test002?useUnicode=true&characterEncoding=utf-8
spring.datasource.test2.username = root
spring.datasource.test2.password = root
加载数据源
@ Configuration // 注册到 springboot 容器中
@MapperScan (basePackages = "com.itmayiedu.user1" , sqlSessionFactoryRef = "test1SqlSessionFactory" )
public class DataSource1Config {
 
      /**
       *
       * @methodDesc : 功能描述 :( 配置 test1 数据库 )
       * @param : @return
       * @createTime :2017 9 17 下午 3:16:44
       * @returnType :@return DataSource
       * @copyright : 上海每特教育科技有限公司
       * @QQ :644064779
       */
      @Bean (name = "test1DataSource" )
      @Primary
      @ConfigurationProperties (prefix = "spring.datasource.test1" )
      public DataSource testDataSource() {
           return DataSourceBuilder. create ().build();
      }
 
      /**
       *
       * @methodDesc : 功能描述 :(test1 sql 会话工厂 )
       * @author : 余胜军
       * @param : @param
       *             dataSource
       * @param : @return
       * @param : @throws
       *             Exception
       * @createTime :2017 9 17 下午 3:17:08
       * @returnType :@param dataSource
       * @returnType :@return
       * @returnType :@throws Exception SqlSessionFactory
       * @copyright : 上海每特教育科技有限公司
       * @QQ :644064779
       */
      @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 /test1/*. xml "));
           return bean .getObject();
      }
 
      /**
       *
       * @methodDesc : 功能描述 :(test1 事物管理 )
       * @author : 余胜军
       * @param : @param
       *             dataSource
       * @param : @return
       * @param : @throws
       *             Exception
       * @createTime :2017 9 17 下午 3:17:08
       * @returnType :@param dataSource
       * @returnType :@return
       * @returnType :@throws Exception SqlSessionFactory
       * @copyright : 上海每特教育科技有限公司
       * @QQ :644064779
       */
      @Bean (name = "test1TransactionManager" )
      @Primary
      public DataSourceTransactionManager testTransactionManager( @Qualifier ( "test1DataSource" ) DataSource dataSource ) {
           return new DataSourceTransactionManager( dataSource );
      }
 
      @Bean (name = "test1SqlSessionTemplate" )
  @Primary
      public SqlSessionTemplate testSqlSessionTemplate(
                 @Qualifier ( "test1SqlSessionFactory" ) SqlSessionFactory sqlSessionFactory ) throws Exception {
           return new SqlSessionTemplate( sqlSessionFactory );
      }
 
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值