事务研究之路记录

  1. spring中的事务管理是依赖aop,可以使用@Transactional注解实现事务
    且ab两个方法,a方法调用b方法,都有这个注解的情况下,b不能直接用new 构造器或者this引用,而是应该通过注入b所在类为bean,通过这个bean去引用b,这样a和b才在一个共同的事务中,否则b是不会参与到a的事务中的。new 构造器形成的对象是被代理对象,被spring管理的类形成bean是代理对象,代理对象才会参与事务
  2. a接口调用b接口,b接口正常执行,a接口调用完b接口后报错,a接口的内容会回滚,b不会回滚,因为b已经完成一个请求事务,对a的异常已经无从感知;若b报异常,a会感知到,ab都会回滚。
  3. 一个接口,abc三步,第一次请求,在a处改变某个表中字段的值,在c处打断点,另一个接口在b处查a处那个字段,此时查出来的值应该是a处值改变之前的数据,因为事务具有隔离性,且myslq默认是可重复度,未提交读导致的脏读不会发生。
  4. 即使加了@Transactional注解,但在方法中又使用了try catch来捕获异常,那么事务不会回滚,想回滚可以在catch中抛出异常,或者手动回滚事务(TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();)
  5. try catch finally 执行顺序,try中没异常,catch不会执行,finally会执行,try catch中又return,会先执行finally再执行return
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值