Spring的声明式事务管理

本文通过实例演示如何在Spring框架中实现声明式事务管理。主要步骤包括:在Service层使用@Transactional注解标记需要事务处理的方法,并在Spring配置文件中启用事务管理器。此方法简化了事务处理流程。

笔者之前从原理的层面讲解过Spring的事务处理,包括编程式事务处理和声明式事务处理,详见博客 Spring事务处理-编程式事务和声明式事务。这篇文章从原理的层面讲解了Spring的事务管理机制,读完了这篇博客,笔者可以一针见血的使用spring的处理机制。

今天这篇博客仅仅是Spring声明式处理的正常使用,偏向工程的使用说明。还是以最近的几篇博客中常用的test工程为例,具体如下:

首先,第一步:在service层中需要事务管理的方法上添加注解@Transactional,下面是test工程中test-service子模块的UserServiceImpl类中的一个方法:

  @Override
    @Transactional
    public HttpResult<Boolean> testTransaction(UserCreateReqDTO userCreateReqDTO) {
        if (userCreateReqDTO == null) {
            return HttpResult.successResult(Boolean.FALSE);
        }
        UserDO userDO = UserConvent.conventToUserDO(userCreateReqDTO);
        if (userDao.createUser(userDO)) {
            throw new SystemException(ErrorEnum.TEST_TRANSACTION);
//            return HttpResult.successResult(Boolean.TRUE);
        }
        return HttpResult.successResult(Boolean.FALSE);
    }

其实@Transactional注解是有参数的,可以不写,这样Spring将使用默认参数,也是最最常用的参数。关于参数的具体介绍,请参见我的博客 点击打开链接

然后,第二步:在spring的配置文件中添加如下内容:

    <!--事务相关-->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"
          p:dataSource-ref="defaultDataSource"/>
    <tx:annotation-driven transaction-manager="transactionManager"/>
在上面的文件中,第一条语句是通知spring框架对数据源defaultDataSource进行事务管理,要注意的是:这里的defaultDataSource就是mybaties使用的数据源。

在上面的文件中,第二条语句是通知spring框架使用声明式事务管理,也就是在代码中使用@Transactional注解的形式声明事务。


以后,在所有需要进行事务管理的方法上使用@Transactional纾解就可以了。有木有很方便。

至此,spring声明式事务管理就配置完了。



觉得本文不错的话,别忘了关注我哦。

代码参见本人的github。点击打开链接



笔者开设了一个知乎live,详细的介绍的JAVA从入门到精通该如何学,学什么?

提供给想深入学习和提高JAVA能力的同学,欢迎收听https://www.zhihu.com/lives/932192204248682496

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值