笔者之前从原理的层面讲解过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
本文通过实例演示如何在Spring框架中实现声明式事务管理。主要步骤包括:在Service层使用@Transactional注解标记需要事务处理的方法,并在Spring配置文件中启用事务管理器。此方法简化了事务处理流程。
844

被折叠的 条评论
为什么被折叠?



