Spring的声明式事务管理

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

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

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

  @Override
    @Transactional
    public HttpResult 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的配置文件中添加如下内容:

    
    
    
在上面的文件中,第一条语句是通知spring框架对数据源defaultDataSource进行事务管理,要注意的是:这里的defaultDataSource就是mybaties使用的数据源。

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


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

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


 
  

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

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



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

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

你可能感兴趣的:(框架探险)