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+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类似的操作。