涨知识了!Spring 怎么在一个事务中开启另一个事务
my.oschina.net/u/3441184/blog/893628
Spring项目,需要在一个事务中开启另一个事务。
@Service
public class ServiceA {
@Transactional
public void doSomething(){
向数据库中添加数据;
调用其他系统;
}
}
Propagation propagation() default Propagation.REQUIRED;
@Service
public class ServiceA {
@Transactional
public void doSomething(){
insert();
调用其他系统;
}
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void insert(){
向数据库中添加数据;
}
}
@Service
public class ServiceA {
@Autowired
private ServiceB serviceB;
@Transactional
public void doSomething(){
serviceB.insert();
调用其他系统;
}
}
@Service
public class ServiceB {
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void insert(){
向数据库中添加数据;
}
}
<aop:aspectj-autoproxy expose-proxy="true"/>
或者
<aop:config expose-proxy="true">
,并且在代码的调用中要求使用代理对象去调用即可:
((ServiceA ) AopContext.currentProxy()).insert();
最近热文