• 【面试题精讲】SpringBoot的传播机制详解


    首发博客地址[1]

    系列文章地址[2]


    Spring Boot 是基于 Spring 框架的快速开发框架,提供了许多便捷的特性和机制来简化开发过程。在 Spring Boot 中,事务的传播机制是通过@Transactional 注解来实现的。

    @Transactional 注解可以用于方法、类或接口上,用于标识方法或类中的所有方法需要进行事务管理。通过设置@Transactional 注解的 propagation 属性,可以指定事务的传播行为。

    事务的传播行为分为以下几种:

    1. REQUIRED:表示当前方法必须在一个事务内运行。如果当前已经存在事务,则加入该事务;如果当前不存在事务,则创建一个新的事务。

    2. SUPPORTS:表示当前方法支持事务。如果当前存在事务,则加入该事务;如果当前不存在事务,则以非事务方式运行。

    3. MANDATORY:表示当前方法必须在一个事务内运行。如果当前不存在事务,则抛出异常。

    4. REQUIRES_NEW:表示当前方法必须在一个新的事务内运行。如果当前存在事务,则挂起该事务并创建一个新的事务。

    5. NOT_SUPPORTED:表示当前方法不支持事务。如果当前存在事务,则挂起该事务。

    6. NEVER:表示当前方法不支持事务。如果当前存在事务,则抛出异常。

    7. NESTED:表示当前方法必须在一个嵌套事务内运行。如果当前存在事务,则在嵌套事务内运行;如果当前不存在事务,则创建一个新的事务。

    下面是一个使用 Spring Boot 传播机制的示例:

    @Service
    @Transactional(propagation = Propagation.REQUIRED)
    public class UserService {

        @Autowired
        private UserRepository userRepository;

        public void createUser(User user) {
            // 保存用户信息
            userRepository.save(user);

            // 调用其他方法,如果其他方法也有@Transactional注解,则会参与到当前事务中
            updateUserStatus(user.getId());
        }

        @Transactional(propagation = Propagation.REQUIRED)
        public void updateUserStatus(Long userId) {
            // 更新用户状态
            userRepository.updateStatus(userId);
        }
    }
    • 1

    在上面的示例中,UserService 类的 createUser 方法使用了@Transactional 注解,并设置了传播行为为 REQUIRED,表示该方法必须在一个事务内运行。在该方法中,先保存用户信息到数据库,然后调用了 updateUserStatus 方法。由于 updateUserStatus 方法也使用了@Transactional 注解,并且传播行为也为 REQUIRED,所以它会参与到当前事务中,保证了两个方法的操作在同一个事务内执行。

    通过使用@Transactional 注解,我们可以方便地控制事务的传播行为,实现对数据库操作的事务管理。

    参考资料

    [1]

    首发博客地址: https://blog.zysicyj.top/

    [2]

    系列文章地址: https://blog.zysicyj.top/categories/技术文章/后端技术/系列文章/面试题精讲/

    本文由 mdnice 多平台发布

  • 相关阅读:
    仿真软件Proteus8.10 SP3 pro一键安装、汉化教程(附proteus8.10下载链接安装视频)
    2023年辽宁省数学建模竞赛A题铁路车站的安全标线
    揭开Vue的响应式秘密:深入剖析Vue2与Vue3的差异与革新
    [ web基础篇 ] Burp Suite 爆破 Basic 认证密码
    如何进行大数运算和高精度计算?
    架构问题:技术选型
    [云原生] 二进制k8s集群(下)部署高可用master节点
    【无标题】
    数据库设计规范
    原生M1/M2 Photoshop 2022 for Mac(PS2022)v23.4.2 中英文正式发布详情介绍&安装教程
  • 原文地址:https://blog.csdn.net/njpkhuan/article/details/132631744