Spring事务(二)-@Transactional注解

[复制链接]
发表于 2022-10-7 11:26:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×

上一节说了Spring的事务配置,其中,声明式事务配置里有5种配置方式,
@Transactional注解应该是最为常用的一种方式了。这一节就说说@Transactional注解。
@Transactional注解可以放到类名或者方法名上面,
写在类名上面,如下:
  1. @Transactional( propagation = Propagation.REQUIRED, isolation = Isolation.DEFAULT, timeout = -1, readOnly = false, rollbackFor = {Exception.class})
  2. @Service
  3. public class UserServiceImpl {
  4.     public void A() {
  5.         //......
  6.     }
  7. }
复制代码
写在方法名上面,如下:
  1. @Transactional( propagation = Propagation.REQUIRED, isolation = Isolation.DEFAULT, timeout = -1, readOnly = false, rollbackFor = {Exception.class})
  2. public void A() {
  3.         //......
  4. }
复制代码
如果写在类上面,则这个类下面的所有方法都会应用这个注解的属性设置。
下面是@Transactional注解的各个属性解释:
属性名说明propagation事务的传播行为,默认值为 REQUIRED。[详情]isolation事务的隔离级别,默认值为 DEFAULT。[详情]timeout事务的超时时间,默认值为-1。如果超过该时间限制但事务还没有完成,则自动回滚事务。readOnly指定事务是否为只读事务,默认值为 false;如果方法内只有select的操作,没有insert、update、delete的操作,可以设置 read-only 为 true。rollbackFor指定能够触发事务回滚的异常类型。例如:@Transactional(rollbackFor={RuntimeException.class, Exception.class})。rollbackForClassName指定能够触发事务回滚的异常类名。例如:@Transactional(rollbackForClassName={"RuntimeException","Exception"})。noRollbackFor指定的异常类型,不回滚事务。默认值为{}。例如:@Transactional(noRollbackFor={RuntimeException.class, Exception.class})。noRollbackForClassName指定的异常类名,不回滚事务。默认值为{}。例如:@Transactional(noRollbackForClassName={"RuntimeException","Exception"})。
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表