当前位置: 首页> 游戏> 评测 > spring注解:@Transactional使用简介

spring注解:@Transactional使用简介

时间:2025/8/1 14:22:59来源:https://blog.csdn.net/weixin_73922932/article/details/140894550 浏览次数:0次

@Transactional 是 Spring 框架提供的声明式事务管理的一个核心注解,主要用于对方法进行事务管理。它能够确保方法在执行过程中的多个操作要么全部成功,要么全部失败。这种事务管理方式可以简化开发人员编写事务管理代码的工作量,提高开发效率。

  1. 作用范围@Transactional 注解可以应用于方法或类上。如果应用于方法上,仅对被注解的方法提供事务管理;如果应用于类上,则对类中的所有方法提供事务管理。

  2. 事务传播行为@Transactional 注解的 propagation 属性可以指定事务的传播行为。常见的传播行为有:

    • Propagation.REQUIRED:默认值,如果当前存在事务,则加入该事务;如果当前没有事务,则创建一个新的事务。
    • Propagation.REQUIRES_NEW:创建一个新的事务,如果当前存在事务,则挂起当前事务。
    • Propagation.SUPPORTS:如果当前存在事务,则加入该事务;如果当前没有事务,则以非事务的方式执行。
    • 其他传播行为还包括:Propagation.MANDATORYPropagation.NOT_SUPPORTEDPropagation.NEVERPropagation.NESTED
  3. 事务隔离级别@Transactional 注解的 isolation 属性可以指定事务的隔离级别。常见的隔离级别有:

    • Isolation.DEFAULT:使用后端数据库的默认隔离级别。
    • Isolation.READ_UNCOMMITTED:最低的隔离级别,允许读取未提交的数据。
    • Isolation.READ_COMMITTED:保证读取到的数据是已经提交的数据。
    • Isolation.REPEATABLE_READ:保证在一个事务中,多次读取同一数据的结果是一致的。
    • Isolation.SERIALIZABLE:最高的隔离级别,完全串行执行事务。
  4. 事务超时时间@Transactional 注解的 timeout 属性可以指定事务的超时时间(以秒为单位)。如果事务在指定的时间内没有完成,将被自动回滚。

  5. 只读属性@Transactional 注解的 readOnly 属性可以指定事务是否为只读。如果设置为 true,则事务将被标记为只读,这有助于提高数据库性能。

  6. 回滚规则@Transactional 注解的 rollbackFornoRollbackFor 属性可以指定哪些异常会导致事务回滚,哪些异常不会。

  7. 事务管理器@Transactional 注解的 transactionManager 属性可以指定使用的事务管理器(例如:PlatformTransactionManager)的名称。

以下是一个简单的示例,展示如何在 Spring 应用程序中使用 @Transactional 注解:

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;@Service
public class UserService {@Transactionalpublic void addUser(User user) {// 插入用户信息到数据库}@Transactional(readOnly = true)public User getUser(Long id) {// 根据 ID 查询用户信息}
}

在这个示例中,addUser 方法和 getUser 方法都被 @Transactional 注解修饰,分别表示添加用户操作需要事务支持,而查询用户操作是只读的。

关键字:spring注解:@Transactional使用简介

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: