spring 的事务注解

这篇博客探讨了Spring的@Transactional注解的使用场景及其可能导致失效的原因,包括方法访问权限、异常类型、类内调用等。同时,介绍了事务的传播模式,如REQUIRED、NOT_SUPPORTED、REQUIRES_NEW等,并指出事务注解依赖于CGLib动态代理,而非JDK动态代理。
摘要由CSDN通过智能技术生成

知识点:

1.同一个类的(没有@Transactional注解)A方法调用B方法,(有@Transactional注解)B方法的事务无效。

2.A类的B方法调用C类的D方法,那么D方法的事务是有效的。(这里的B方法没有注解,D方法有注解)

解决注解失效的方法:

@Transactional注解可以作用于哪些地方?

@Transactional 可以作用在接口、类、类方法。

  • 作用于类:当把@Transactional 注解放在类上时,表示所有该类的public方法都配置相同的事务属性信息。
  • 作用于方法:当类配置了@Transactional,方法也配置了@Transactional,方法的事务会覆盖类的事务配置信息。
  • 作用于接口:不推荐这种使用方法,因为一旦标注在Interface上并且配置了Spring AOP 使用CGLib动态代理,将会导致@Transactional注解失效

一:事务注解失效的解决方法。

1.检查方法是不是public,只有public的方法才会生效。
2.检查异常是不是unchecked异常,Spring默认抛出了未检查unchecked异常(继承自 RuntimeException 的异常)或者 Error才回滚事务;其他异常不会触发回滚事务。如果在事务中抛出其他类型的异常,但却期望 Spring 能够回滚事务,就需要指定 rollbackFor属性。
3.如果是c

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值