springboot整合多数据源

多数据源产生的问题:事物管理

在实际项目中,怎么样搭建多数据源 区分数据源

举个例子 2个数据源 test001 test002

1、分包结构

com.baidu.test001 --访问test001数据库

dao

service

com.baidu.test002 --访问test002数据库

dao

Service

分布式事物的解决方案jta+automatic传统项目

 

2、使用注解方式

com.baidu

dao

Service

Class User{

@datasouetest001  --访问test001数据库

  Public void test001(){

}

@datasouetest002 --访问test002数据库

  Public void test002(){

}

 }

Springboot整合事务

Spring事物分类(编程事务、声明事务(xml方式、注解方式))

注解事务

@transactional  (两个操作,当第二个操作发生错误可以回滚)

springboot整合多数据源

解决方式:分布式事物的解决方案

springboot+jta+atomikos

传统项目 test01和test02数据库数据源注册第三方(atomikos

---两段提交协议、2pc


1、PROPAGATION_REQUIRED:如果当前没有事务,就创建一个新事务,如果当前存在事务,就加入该事务,该设置是最常用的设置。

2、PROPAGATION_SUPPORTS:支持当前事务,如果当前存在事务,就加入该事务,如果当前不存在事务,就以非事务执行。‘

3、PROPAGATION_MANDATORY:支持当前事务,如果当前存在事务,就加入该事务,如果当前不存在事务,就抛出异常。

4、PROPAGATION_REQUIRES_NEW:创建新事务,无论当前存不存在事务,都创建新事务。

5、PROPAGATION_NOT_SUPPORTED以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。

6、PROPAGATION_NEVER以非事务方式执行,如果当前存在事务,则抛出异常。

7、PROPAGATION_NESTED如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行与PROPAGATION_REQUIRED类似的操作。