spring中事务的传播行为

        之前在学习到spring的事务的时候,一直不知道传播行为是什么意思。后来偶然的一次,看到有一位老师讲到了spring的事务的传播行为才恍然大悟。

       首先spring帮我们来管理事务是通过aop的形式,这个也是aop要解决的核心问题之一。就是帮我们从重复的代码中解救出来,通常如果一个service如果加入了事务,那么在aop帮我们在进入service的这个方法之前呢就会为我们创建一个事务。首先来个问题.

     

service A{
   @Autowired
   private ServiceB serviceB

   @Transaction
   public void shopping(){
      ***;
    serviceB.update()
  }

}
Service B{
  @Transaction
  public void update(){
    ***;   
  }
}

例如上述代码会创建几个事务,这个就涉及到了spring事务的传播行为了。

因为spring默认@Transaction的传播行为是required,而这种传播行为根据源码可知,它在创建事务之前会进行判断,如果已经有事务了,它就会直接使用当前事务,而不会再创建新的事务,所以上述代码只会产生一个事务,所有的代码都是在一个事务之中。而如果要多个事务不产生影响,通常要将一个service中调用另一个service的代码进行try-catch这样的话两个事务之间就不会相互 影响了。当然了具体什么行为还要看配置的传播行为是什么。有待后续学习啦。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值