@Transactional 注解参数详解

1. value/transactionManager

指定事务管理器,两者互为别名。

2. propagation(事务传播机制)

  • REQUIRED:默认选项,加入现有事务或新建事务
  • REQUIRES_NEW:总是新建事务,挂起现有事务
  • SUPPORTS:支持当前事务,无事务也可执行
  • NOT_SUPPORTED:以非事务方式执行
  • MANDATORY:必须在现有事务中运行
  • NEVER:不能在事务中运行
  • NESTED:嵌套在现有事务中,可设置保存点实现部分回滚

3. isolation(隔离级别)

  • DEFAULT:使用数据库默认级别
  • READ_UNCOMMITTED:最低级别,可能出现脏读
  • READ_COMMITTED:解决脏读,可能出现不可重复读和幻读
  • REPEATABLE_READ:解决不可重复读,MySQL默认级别
  • SERIALIZABLE:最高级别,解决所有并发问题,性能最低

4. timeout

设置事务超时时间(秒),超时自动回滚。

5. readOnly

设置只读事务,用于查询操作优化性能。

6. rollbackFor/rollbackForClassName

指定触发回滚的异常类型,默认RuntimeException和Error会回滚。

7. noRollbackFor/noRollbackForClassName

指定不触发回滚的异常类型,与rollbackFor相反。

总结

理解Spring事务管理的核心概念和实战应用技巧,对于开发可靠的数据处理流程至关重要。