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);
    }
  }

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

相关文章

  • java使用zookeeper实现的分布式锁示例

    java使用zookeeper实现的分布式锁示例

    这篇文章主要介绍了java使用zookeeper实现的分布式锁示例,需要的朋友可以参考下
    2014-05-05
  • 详解如何将JAVA程序制作成可以直接执行的exe文件

    详解如何将JAVA程序制作成可以直接执行的exe文件

    这篇文章主要介绍了详解如何将JAVA程序制作成可以直接执行的exe文件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • Java项目命名规范参考

    Java项目命名规范参考

    在实际项目开发中,命名规范的遵守可以提高代码的可读性和可维护性,本文就来介绍一下Java项目命名规范参考,具有一定的参考价值,感兴趣的可以了解一下
    2023-11-11
  • Java中spring boot 字符串判断是否为空方法小结

    Java中spring boot 字符串判断是否为空方法小结

    这篇文章主要介绍了Java中spring boot字符串判断是否为空,通过安装依赖,结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2023-11-11
  • SpringBoot利用限速器RateLimiter实现单机限流的示例代码

    SpringBoot利用限速器RateLimiter实现单机限流的示例代码

    本文主要介绍了SpringBoot利用限速器RateLimiter实现单机限流的示例代码,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • Druid连接池未关闭导致内存泄漏问题

    Druid连接池未关闭导致内存泄漏问题

    这篇文章主要介绍了Druid连接池未关闭导致内存泄漏问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • Java实现小程序简单五子棋

    Java实现小程序简单五子棋

    这篇文章主要介绍了利用Java实现小程序简单五子棋,本程序适用于java初学者巩固类与对象、事件响应、awt包中各种工具的相关概念以及对逻辑能力的锻炼,下面来看具体实现吧
    2021-12-12
  • Java如何实现图片的叠加与拼接操作

    Java如何实现图片的叠加与拼接操作

    这篇文章主要介绍了Java如何实现图片的叠加与拼接操作,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • 浅谈mybatis返回单一对象或对象列表的问题

    浅谈mybatis返回单一对象或对象列表的问题

    这篇文章主要介绍了浅谈mybatis返回单一对象或对象列表的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • java SpringBoot 分布式事务的解决方案(JTA+Atomic+多数据源)

    java SpringBoot 分布式事务的解决方案(JTA+Atomic+多数据源)

    这篇文章主要介绍了java SpringBoot 分布式事务的解决方案(JTA+Atomic+多数据源),文章围绕主题展开详细的内容介绍,具有一定的参考价值,感兴趣的小伙伴可以参考一下
    2022-08-08

最新评论