事务

事务就是在执行一系列的逻辑操作,而且所有操作必须全部成功完成,否则在每个操作中所作的所有更改都会被撤消。同一条船上的蚂蚱,要死一起死,要活一起。
1、spring的事务配置
把一个DataSource(如DruidDataSource)作为一个@Bean注册到Spring容器中,配置好事务性资源。
把一个@EnableTransactionManagement 注解放到一个@Configuration 类上,配置好事务管理器,并启用事务管理。
把一个@Transactional 注解放到类上或方法上,可以设置注解的属性,表明该方法按配置好的属性参与到事务中。

2、.Spring声明式事务实现原理
声明式事务成为可能,主要得益于Spring AOP。使用一个事务拦截器,在方法调用的前后/周围进行事务性增强(advice),来驱动事务完成。

3.如何回滚一个事务
就是在一个事务上下文中当前正在执行的代码里抛出一个异常,事务基础设施代码会捕获任何未处理的异常,并且做出决定是否标记这个事务为回滚。

4.默认回滚规则
默认只把runtime, unchecked exceptions标记为回滚,即RuntimeException及其子类,Error默认也导致回滚。Checked exceptions 默认不导致回滚。这些规则和EJB是一样的。

5.如何配置回滚异常
使用@Transactional 注解的 rollbackFor/rollbackForClassName 属性,可以精确配置导致回滚的异常类型,包括checked exceptions。

noRollbackFor/noRollbackForClassName 属性,可以配置不导致回滚的异常类型,当遇到这样的未处理异常时,照样提交相关事务。

6.事务注解在类/方法上
@Transactional注解既可以标注在类上,也可以标注在方法上。当在类上时,默认应用到类里的所有方法。如果此时方法上也标注了,则方法上的优先级高。

7.事务注解在类上的继承性
@Transactional 注解的作用可以传播到子类,即如果父类标了子类就不用标了。但倒过来就不行了。

子类标了,并不会传到父类,所以父类方法不会有事务。父类方法需要在子类中重新声明而参与到子类上的注解,这样才会有事务。

事务的原理:
在这里插入图片描述

https://blog.csdn.net/qq_41907991/article/details/107717419?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param

关于事务的帖子,此人的帖子非常优秀,学习了
https://blog.csdn.net/qq_41907991/article/details/107479109

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值