@Transactional 注解作用详解?
时间: 2024-08-15 21:07:41 浏览: 94
`@Transactional`注解是Spring框架提供的一种声明式事务管理机制,用于标记那些希望参与到事务中的方法。这个注解的主要作用包括以下几个方面:
1. **开启事务**:当方法上标注了`@Transactional`,Spring会自动开始一个新的事务,除非配置了默认的隔离级别、传播行为或其他属性。
2. **隔离级别**:`isolation`属性允许设置事务的隔离级别,比如READ_UNCOMMITTED、READ_COMMITTED、REPEATABLE_READ、SERIALIZABLE,控制事务与其他事务的并发访问程度。
3. **传播行为**:`propagation`属性定义了当前方法如何处理已存在的事务。常见的值有REQUIRED(如果已有事务,则加入;若无事务,则新建)、Mandatory(必须在事务中)、Supports(支持事务但本身不在事务内)、NotSupported(不允许事务),以及NESTED(如果已有事务,则嵌套在其中)。
4. **异常管理**:如果方法中抛出异常,`@Transactional`会负责事务的回滚。如果`rollbackFor`属性指定了异常类型列表,只有这些类型的异常才会触发回滚。
5. **保存点**:`savepoint`和`rollbackToSavepoint`可用于在事务中创建和恢复保存点,这对于复杂的事务操作很有帮助。
6. **只读事务**:通过`readOnly=true`,可以标记为只读事务,数据库会优化查询计划,降低并发冲突。
7. **最终提交/回滚**:在Spring AOP中,可以通过配置`@RollbackOn`或`@CommitOn`来指定是否因特定条件而手动完成事务。
总的来说,`@Transactional`简化了事务管理,让开发者无需显式地管理开始、提交和回滚事务,提高了代码的可读性和可维护性。
阅读全文