博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
service的自调用 VS service之间调用
阅读量:4290 次
发布时间:2019-05-27

本文共 890 字,大约阅读时间需要 2 分钟。

一、seervice的自调用:

public interface AService {          public void a;          public void b;      }             @Service      public class AServiceImpl1 implements AService{          @Transactional(propagation = Propagation.REQUIRED)          public void a {   this.b;          }          @Transactional(propagation = Propagation.REQUIRES_NEW)          public void b {          }      }

如上,为在一个对象,service里面自调用(自己方法调自己的方法),这样的情况,this.b是不会事务增强的。可以参考我的另一篇博客 spring doc 学习 之 事务篇 。spring文档有说到过,必须外部调用才会事务增强。

原因就是:this.b,这里的this就是当前对象,而非proxy对象,当然没有事务增强了。

也可以参考这个博客 http://blog.csdn.net/wxwzy738/article/details/27566645

二、service之间的调用:

ServiceA {                      void methodA {            ServiceB.methodB;        }     }     ServiceB {                        void methodB {        }          }

这种情况,因为都是外部调用,都会开启事务,并且依据事务传播特性,会传播到B方法。

总结,这两种情况有点像,要区分对待。可以加深理解aop对事务的处理

你可能感兴趣的文章
Java高级个人笔记(RandomStringUtils工具类)
查看>>
Java高级个人笔记(判断List、Map、Set是否为空及效率比较)
查看>>
Java高级个人笔记(StringUtils工具类用法)
查看>>
Java高级个人笔记(可变参数的使用)
查看>>
MAC OS X10.10上Android开发环境搭建
查看>>
Android仿微信/支付宝的方块密码输入框
查看>>
html+css 图片右上角加删除叉,图片删除
查看>>
java解析xml文件,返回xml字符串
查看>>
处理一个字符串多个分隔符
查看>>
在CentOS中都安装Java和Perl(一)
查看>>
单机版redis的安装以及redis生产环境启动方案
查看>>
分析redis的RDB和AOF两种持久化机制的工作原理
查看>>
在项目中部署redis企业级数据备份方案以及各种踩坑的数据恢复容灾演练
查看>>
Redis哨兵架构的相关基础知识的讲解
查看>>
副本集的搭建
查看>>
为MongoDB添加身份验证
查看>>
mongodb分片
查看>>
mongodb分片搭建
查看>>
mongodb使用方面的一些建议
查看>>
mongodb常用配置及维护
查看>>