声明式事务的约定流程

@Transactional注解

对于声明式事务使用此注解进行标注的,这个注解可以标注在类上和方法上,标注在类上时,表示所有公共非静态类都开启事务功能。
该注解上还可以配置十种属性,但是常用的5种分别是:
1.value:定义事务管理器,他是ioc容器里的一个bean id,这个bean需要实现接口Platform TransactionManager。
2.isolation:隔离级别,这是数据库同时存在多个事务时才有意义的概念
3.propagation:传播行为,传播行为是方法之间调用的问题。
4.timeout:超时时间,单位为秒,超时会导致异常,默认导致事务回滚。
5.readonly:是否开启只读。默认为false。

在Spring ioc容器初始化时,spring会读入这个注解中配置的信息,然后把信息存储到事务定义器(TransactionDefinition接口的实现类)里面。在spring上下文调用被修饰的方法时,spring就会产生aop功能,首先通过事务管理器创建事务,根据Spring提供的事务管理器顶层接口PlatformTransactionManager的源码来看,它的getTransaction方法传入的一个TransactionDefinition类型的参数,这就表明前面我们存储到事务定义器中的属性就会被被设置在事务上。创建事务完毕后 通过反射调用开发者的业务逻辑代码,如果没有异常,事务管理器就会为我们提交事务,否则就会回滚。所以我们在开发过程中只需要写业务代码和注解相关配置就可以了。
在springboot中,当你依赖了mybatis-spring-boot-starter后,他会自动创建一个DataSourceTransactionManager对象作为事务管理器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值