B、事务的传播行为
1. propagation_required(默认)
需要事务,默认的传播行为,如果当前存在事务,就沿用当前事务
否则新建一个事务运行子方法
即只要大方法里面有事务,小方法即使没有事务,也会用大事务的
说明都在沿用当前存在的事务,
2. propagation_required_new(用于子方法)
无论当前事务是否存在,都会创建新事物运行方法
这样新事务就会拥有新的锁和新的事务隔离级别,与当前事务互相独立
2. propagation_nested(用户子方法)
在当前方法调用子方法时,如果子方法发生异常,并且被捕获的情况下
只回滚子方法执行的SQL,而不回滚当前方法执行的事务
C、 测试传播行为
1. 首先调整Springboot日志级别,调到Debug模式
在yml文件中
logging:
config: classpath:conf/logback-dev.xml
level:
root: debug
2. 在说事务的传播行为的时候,我们先看这个
class B(){
void methodB(){
doSomething..........
}
}
class A(){
void methodA(){
dosomething.....
void methodB(){
dosomething.......
}
}
}
Class B 的 methodB()方法如下:
public MyRedisDO insert(MyRedisDO myRedisDO) {
myRedisMapper.insert(myRedisDO);
return myRedisDO;
}
Class A 的methodA()方法
public int insert(List<MyRedisDO> myRedisDOList) {
int count = 0;
MyRedisDO jihe = new MyRedisDO();
jihe.setName("这是集合插入的");
jihe = myRedisService.insert(jihe);
for (MyRedisDO myRedisDO : myRedisDOList) {
MyRedisDO myRedisDO1 = myRedisService.insert(myRedisDO);
if (myRedisDO1 != null) {