位置: IT常识 - 正文

从阿里规约看Spring事务(阿里规则官方头条)

编辑:rootadmin
目标:事务失效引发的灾难 如下图(张三 >李四转账) tips 下订单 订单支付 减库存(失败) 超卖现象 代码回忆: //实现类 public class UserServiceImpl implements UserService { @Autowired private UserMapper ...

推荐整理分享从阿里规约看Spring事务(阿里规则官方头条),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:阿里规则在哪里看,阿里规则在哪里看,阿里做到p7,2021阿里新规则,阿里规范,阿里规范,阿里规则在哪里看,阿里规范,内容如对您有帮助,希望把文章链接给更多的朋友!

目标:事务失效引发的灾难

如下图(张三--->李四转账)

tips

下订单-------订单支付-----减库存(失败)

超卖现象

代码回忆:

//实现类public class UserServiceImpl implements UserService {@Autowiredprivate UserMapper userMapper;@Resourceprivate LogService logService;@Override@Transactional//@Transactional(rollbackFor = Exception.class)public void insert() throws Exception {method1_Test();}//模拟转账@Transactionalprivate void method1_Test() throws Exception {System.out.println(">>>>>>>>>>>进入到业务方法");User user = new User();user.setName("张三");userMapper.insertUser(user);//张三扣减500元addPayment();//模拟李四增加500元(检查异常)} //FileNotFoundException extends IOExceptionprivate void addPayment() throws FileNotFoundException {FileInputStream in = new FileInputStream("a.txt");//模拟检查异常}} ......略

如果说你从从事务方法中抛出的是检查异常(io、sql),那么这个时候,Spring将不能进行事务回滚。

从阿里规约看Spring事务(阿里规则官方头条)

是不是很恐怖呢??

所以说,阿里规定1、让检查异常也回滚:你就需要在整个方法前加上@Transactional(rollbackFor=Exception.class)

2、让非检查异常不回滚:需要加入@Transactional(notRollbackFor=RunTimeException.class)

3、不需要事务管理(or 日志丢失)需要加入@Transactional(propagation=Propagation.NOT_SUPPORTED)

课程目标总结

1、解决事务失效:通过源码学习如何让检查异常也回滚(or 运行异常不回滚);从源码角度深入底层原理

2、解决无需事务控制;查询 or 日志记录;通过传播属性如何控制;底层是如何实现的

3、正常的事务执行流程在源码中是如何实现的

1.1 Spring事务总体介绍

在Spring中,事务有两种实现方式:

编程式事务管理: 编程式事务管理使用TransactionTemplate可实现更细粒度的事务控制。

申明式事务管理: 基于Spring AOP实现。

其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务。

本文链接地址:https://www.jiuchutong.com/zhishi/304598.html 转载请保留说明!

上一篇:最新2022年Auto Cad2019专用破解版windows11-windows12-32位64位下载(附视频教程)免费下载(学生誓词最新2022年)

下一篇:HashMap详解(hashmap教程)

免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

鄂ICP备2023003026号

网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

友情链接: 武汉网站建设 电脑维修 湖南楚通运网络