spring中的@Transactional注解你可以详细讲讲吗
时间: 2023-11-04 15:23:25 浏览: 84
@Transactional注解是Spring框架中常用的事务管理注解,它可以被应用到类或方法上。当它被应用到类上时,它表示所有的方法都将被事务管理;当它被应用到方法上时,它表示该方法将被事务管理。
@Transactional注解可以接受一些参数,包括:
1. propagation:事务传播行为,默认是Propagation.REQUIRED。
2. isolation:事务隔离级别,默认是Isolation.DEFAULT。
3. timeout:事务超时时间,默认是-1,表示使用数据库默认超时时间。
4. readOnly:是否为只读事务,默认是false。
5. rollbackFor:指定哪些异常需要回滚事务。
6. noRollbackFor:指定哪些异常不需要回滚事务。
下面是一些常见的事务传播行为:
1. REQUIRED:如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中。
2. REQUIRES_NEW:新建事务,如果当前存在事务,把当前事务挂起。
3. SUPPORTS:支持当前事务,如果当前存在事务,就加入到这个事务中,如果当前不存在事务,就以非事务状态执行。
4. NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
5. MANDATORY:支持当前事务,如果当前不存在事务,就抛出异常。
6. NEVER:以非事务方式执行操作,如果当前存在事务,就抛出异常。
7. NESTED:如果当前存在事务,则在嵌套事务内执行,如果当前没有事务,则新建一个事务。嵌套事务是独立于父事务的,它有自己的提交和回滚。如果嵌套事务内发生异常,只会回滚当前事务的操作,而不会回滚父事务的操作。
总的来说,@Transactional注解可以让我们更方便地管理事务,避免手动处理事务的繁琐过程。但是,我们需要谨慎使用它,特别是在复杂的应用场景中,需要仔细考虑事务传播行为和隔离级别等参数。
阅读全文