在同一个类里面spring的传播机制是不起作用的比如说在执行saveA方法的时候调用C方法插入C设置的传播属性是不使用事物

但是执行的效果是saveA方法抛出异常后导致C的记录回滚了也就是说明C方法设置的隔离级别不起作用。

 @Transactional
public void saveA() throws Exception{
C();
throw new RuntimeException();
} @Override
@Transactional(propagation = Propagation.NOT_SUPPORTED)
public void C() throws Exception {
mapper.insertEntity(entity);
}

接下来新创建一个serviceB类

@Override
@Transactional(propagation = Propagation.NOT_SUPPORTED)
public void B() throws Exception {
mapper.insertEntity(entity);
}
@Transactional
public void saveA() throws Exception{
serviceB.B();
throw new RuntimeException();
} @Override
@Transactional(propagation = Propagation.NOT_SUPPORTED)
public void C() throws Exception {
mapper.insertEntity(entity);
}

此时在调用saveA方法B的记录就没有回滚了   也就是说spring的传播机制是针对于类的   然后同一个类方法相互调用隔离级别是不起作用的。

这个方法是通过spring的AOP类CglibAopProxy的内部类DynamicAdvisedInterceptor调用的,而DynamicAdvisedInterceptor继承了MethodInterceptor,用于拦截方法调用,并从中获取调用链。

如果是在同一个类中的方法调用,则不会被方法拦截器拦截到,因此事务不会起作用,必须将方法放入另一个类,并且该类通过spring注入

最新文章

  1. webstorm快捷键大全
  2. Global eval. What are the options?
  3. 激活windows7 企业版小记
  4. iOS静态库及Framework 创建
  5. 关于如何使用Identity的文献
  6. 在Toast里面显示图片
  7. Linux内核Radix Tree(一)
  8. Node.js模块 加载笔记
  9. C#比较两个时间大小
  10. Android利用Fiddler进行网络数据抓包,手机抓包工具汇总
  11. Python、PyCharm的安装及使用方法(Mac版)
  12. SpringCloud教程 | 第三篇: 服务消费者(Feign)
  13. 关于nginx报错/usr/share/nginx/html/jiankongshare" failed (2: No such file or directory)的问题解决
  14. [Android App]IFCTT,即:If Copy Then That,一个基于IFTTT的"This"实现
  15. php 获取最近一周,一个月,一年
  16. 小游戏专场:腾讯云Game-Tech技术沙龙上海站顺利落下帷幕
  17. Linux 远程同步:rsync
  18. 新闻cms管理系统(二) ---- 后台登录功能
  19. MySQL:如何导入导出数据表和如何清空有外建关联的数据表
  20. 题解【bzoj3529 [SDOI2014]数表】

热门文章

  1. matlab中实现 IEEE754浮点数 与 一般十进制数之间 互相转换的方法
  2. 图像分割必备知识点 | Unet++超详解+注解
  3. 微服务注册到Nacos的IP私网172.x.x.x网段无法访问的问题
  4. 零钱问题的动态规划解法——用 n 种不同币值的硬币凑出 m 元,最少需要多少硬币。
  5. 《MySQL慢查询优化》之SQL语句及索引优化
  6. moviepy音视频剪辑VideoClip类to_mask方法、to_RGB、afx方法
  7. PyQt(Python+Qt)学习随笔:QScrollArea滚动区域的alignment属性
  8. 第10.9节 Python子包的导入方式介绍
  9. 派大星的烦恼MISC
  10. 团队作业4-Day2