Springboot通过aop实现事务控制过程解析

 更新时间:2020年03月09日 11:43:02   作者:程序晓猿  
这篇文章主要介绍了Springboot通过aop实现事务控制过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

spring的事务控制本质上是通过aop实现的。

在springboot中使用时,可以通过注解@Transactional进行类或者方法级别的事务控制,也可以自己通过spring提供的事务管理器手动控制事务

一、 @Transactional注解进行进行类或者方法级别的事务控制

不需要进行特别的设置,按照正常的配置整合spring和mybatis后,在需要进行事务控制的类上或者方法上加上

@Transactional注解,即可对其进行事务控制。

二、手动控制事务

当需要在一个方法的内部进行事务控制时,就需要利用spring提供的事务管理器来手动控制。在方法所在的类中注入事务管理器,然后在方法中需要的位置利用事务管理器进行控制:开启事务,提交事务,回滚事务

  @Autowired
  PlatformTransactionManager platformTransactionManager;
  @Autowired
  TransactionDefinition transactionDefinition;
public void testTransaction() {

    //开启事务
    TransactionStatus transactionStatus = platformTransactionManager.getTransaction(transactionDefinition);
    try {
      CategoryInfo categoryInfo1=new CategoryInfo();
      categoryInfo1.setName("分类1");
      categoryDataDao.add(categoryInfo1);
      //模拟发生异常,事务回滚后应该数据库两条记录都没有
      int i=1/0;
      CategoryInfo categoryInfo2=new CategoryInfo();
      categoryInfo2.setName("分类2");
      categoryDataDao.add(categoryInfo2);
      //提交事务
      platformTransactionManager.commit(transactionStatus);
    } catch (Exception e) {
      logger.error("发生异常事务回滚");
      platformTransactionManager.rollback(transactionStatus);
    }
  }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 关于SpringMVC在Controller层方法的参数解析详解

    关于SpringMVC在Controller层方法的参数解析详解

    在SpringMVC中,控制器Controller负责处理由DispatcherServlet分发的请求,下面这篇文章主要给大家介绍了关于SpringMVC在Controller层方法的参数解析的相关资料,需要的朋友可以参考下
    2021-12-12
  • Java实现的贷款金额计算功能示例

    Java实现的贷款金额计算功能示例

    这篇文章主要介绍了Java实现的贷款金额计算功能,结合实例形式分析了Java简单数值运算及类型转换等相关操作技巧,需要的朋友可以参考下
    2018-01-01
  • Java的LinkedHashSet解析

    Java的LinkedHashSet解析

    这篇文章主要介绍了Java的LinkedHashSet解析,Set接口的哈希表和链表实现,具有可预测的迭代顺序,此实现与 HashSet的不同之处在于它维护一个双向链表,该列表贯穿其所有条目,这个链表定义了迭代顺序,需要的朋友可以参考下
    2023-09-09
  • 基于springboot处理date参数过程解析

    基于springboot处理date参数过程解析

    这篇文章主要介绍了基于springboot处理date参数过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • 解决springboot服务启动报错:Unable to start embedded contain

    解决springboot服务启动报错:Unable to start embedded contain

    这篇文章主要介绍了解决springboot服务启动报错:Unable to start embedded contain的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • IDEA下Maven的pom文件导入依赖出现Auto build completed with errors的问题

    IDEA下Maven的pom文件导入依赖出现Auto build completed with errors的问题

    这篇文章主要介绍了IDEA下Maven的pom文件导入依赖出现Auto build completed with errors,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • JDK 1.8 安装配置教程(win7 64bit )

    JDK 1.8 安装配置教程(win7 64bit )

    这篇文章主要为大家详细介绍了win7 64bit下JDK 1.8 安装配置教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • 2021年最新Redis面试题汇总(1)

    2021年最新Redis面试题汇总(1)

    在程序员面试过程中redis相关的知识是常被问到的话题。这篇文章主要介绍了几道Redis面试题,整理一下分享给大家,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • JAVA输出流与输入流代码实例

    JAVA输出流与输入流代码实例

    这篇文章主要介绍了JAVA输出流与输入流代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • Java之常用类小结案例讲解

    Java之常用类小结案例讲解

    这篇文章主要介绍了Java之常用类小结案例讲解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07

最新评论