@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();
分享一份 2019 最新 Java 架构师学习资料 作者:Mazin
https://my.oschina.net/u/3441184/blog/893628
- END - 推荐阅读: 1、全球 IPv4 地址正式耗尽 2、为什么微服务一定要有网关? 3、Spring 最常用的 7 大类注解,史上最强整理
4、注意了,千万不要在MySQL中使用UTF-8 5、歪国人整理的 2019 年 Java 开发路线图! 关注Java技术栈公众号在后台回复:spring,可获取一份栈长整理的最新 Spring 系列技术干货。 点击「阅读原文」和栈长学更多~