spring传播机制注意点
2024-08-28 16:04:53
在同一个类里面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注入
最新文章
- webstorm快捷键大全
- Global eval. What are the options?
- 激活windows7 企业版小记
- iOS静态库及Framework 创建
- 关于如何使用Identity的文献
- 在Toast里面显示图片
- Linux内核Radix Tree(一)
- Node.js模块 加载笔记
- C#比较两个时间大小
- Android利用Fiddler进行网络数据抓包,手机抓包工具汇总
- Python、PyCharm的安装及使用方法(Mac版)
- SpringCloud教程 | 第三篇: 服务消费者(Feign)
- 关于nginx报错/usr/share/nginx/html/jiankongshare"; failed (2: No such file or directory)的问题解决
- [Android App]IFCTT,即:If Copy Then That,一个基于IFTTT的";This";实现
- php 获取最近一周,一个月,一年
- 小游戏专场:腾讯云Game-Tech技术沙龙上海站顺利落下帷幕
- Linux 远程同步:rsync
- 新闻cms管理系统(二) ---- 后台登录功能
- MySQL:如何导入导出数据表和如何清空有外建关联的数据表
- 题解【bzoj3529 [SDOI2014]数表】
热门文章
- matlab中实现 IEEE754浮点数 与 一般十进制数之间 互相转换的方法
- 图像分割必备知识点 | Unet++超详解+注解
- 微服务注册到Nacos的IP私网172.x.x.x网段无法访问的问题
- 零钱问题的动态规划解法——用 n 种不同币值的硬币凑出 m 元,最少需要多少硬币。
- 《MySQL慢查询优化》之SQL语句及索引优化
- moviepy音视频剪辑VideoClip类to_mask方法、to_RGB、afx方法
- PyQt(Python+Qt)学习随笔:QScrollArea滚动区域的alignment属性
- 第10.9节 Python子包的导入方式介绍
- 派大星的烦恼MISC
- 团队作业4-Day2