doc add spring 事务失效

This commit is contained in:
Shuaishuai Dai 2023-02-17 18:38:16 +08:00
parent ef8dd803cf
commit 1321412866

View File

@ -0,0 +1,52 @@
# Spring事务失效
## 子调用失效
Test service 有f1\f2\f3三个方法
```java
@Service
public class Test {
@Transaction
public void f1(){
f2();
f3();
}
@Transaction
public void f2(){}
public void f3(){}
}
```
以上代码f1方法有添加声明式事务注解 `@Transaction `不管在f1 f2 f3那个方法中出现错误三个方法都会回滚
```java
@Service
public class Test {
public void f1(){
f2();
f3();
}
@Transaction
public void f2(){}
public void f3(){}
}
```
以上代码f1没有添加声明式事务注解 `@Transaction`则 在执行过程中出现错误f1方法不会进行回滚f2\f3方法不管有没有添加声明式事务都不会进行回滚,也就是说f2方法的事务失效了因为当f1没有添加`@Transaction`注解时获取的test 对象不是代理对象调用本身方法也不会使用到代理对象所以f1下调用自身带有声明式事务注解的方法都会失效
解决办法
1、对需要添加事务的代码块添加编程式事务
2、通过其他Service对要开启事务的方法进行调用 比如在Test2 service中 注入 Test 然后调用f2方法
3、自己注入自己在Test 中注入Test 然后再f1里面使用注入的Test调用f2方法