Spring-07 Spring 事务

事物开启

@EnableTransactionManagement注解向Spring容器中添加了两个Bean

  • AutoProxyRegistrar

注册InfrastructureAdvisorAutoProxyCreator的Bean对象,该bean对象继承了AbstractAdvisorAutoProxyCreator,是一个BeanPostProcessor,会在初始化后步骤中去寻找Advisor类型的Bean,如果某个Bean匹配Advisor,会利用动态代理产生一个代理对象。

  • ProxyTransactionManagementConfiguration

是一个配置类,定义了三个bean

        BeanFactoryTransactionAttributeSourceAdvisor:一个Advisor
        AnnotationTransactionAttributeSource:用来判断某个类或方法上是否存在@Transactional注解。
        TransactionInterceptor:当某个类中存在@Transactional注解时,会产生一个代理对象作为Bean,代理对象在执行某个方法时,最终就会进入到TransactionInterceptor的invoke()方法。

事物执行的原理

1.Spring事务底层是基于数据库事务和AOP机制的
2.⾸先对于使⽤了@Transactional注解的Bean,Spring会创建⼀个代理对象作为Bean
3.当调⽤代理对象的⽅法时,会先判断该⽅法上是否加了@Transactional注解
4.如果加了,那么则利⽤事务管理器创建⼀个数据库连接
5.并且修改数据库连接的autocommit属性为false,禁⽌此连接的⾃动提交,这是实现Spring事务⾮
常重要的⼀步
6.然后执⾏当前⽅法,⽅法中会执⾏sql
7.执⾏完当前⽅法后,如果没有出现异常就直接提交事务
8.如果出现了异常,并且这个异常是需要回滚的就会回滚事务,否则仍然提交事务
9.Spring事务的隔离级别对应的就是数据库的隔离级别
10.Spring事务的传播机制是Spring事务⾃⼰实现的,也是Spring事务中最复杂的
11.Spring事务的传播机制是基于数据库连接来做的,⼀个数据库连接⼀个事务,如果传播机制配置为需要新开⼀个事务,那么实际上就是先建⽴⼀个数据库连接,在此新数据库连接上执⾏sql

事物执行的流程 

流程图待补充..

事物的传播机制

分类

案例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值