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

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

相关文章

  • SpringBoot+Mybatis项目使用Redis做Mybatis的二级缓存的方法

    SpringBoot+Mybatis项目使用Redis做Mybatis的二级缓存的方法

    本篇文章主要介绍了SpringBoot+Mybatis项目使用Redis做Mybatis的二级缓存的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • Java使用泛型实现栈结构的示例代码

    Java使用泛型实现栈结构的示例代码

    泛型是JAVA重要的特性,使用泛型编程,可以使代码复用率提高。本文将利用泛型实现简单的栈结构,感兴趣的小伙伴可以跟随小编一起学习一下
    2022-08-08
  • SpringBoot项目中如何实现MySQL读写分离详解

    SpringBoot项目中如何实现MySQL读写分离详解

    在高并发下需要对应用进行读写分离,配置多数据源,即写操作走主库,读操作则走从库,主从数据库负责各自的读和写,缓解了锁的争用,提高了读取性能,这篇文章主要给大家介绍了关于SpringBoot项目中如何实现MySQL读写分离的相关资料,需要的朋友可以参考下
    2022-07-07
  • 从 PageHelper 到 MyBatis Plugin执行概要及实现原理

    从 PageHelper 到 MyBatis Plugin执行概要及实现原理

    这篇文章主要为大家介绍了从 PageHelper 到 MyBatis Plugin执行概要及实现原理,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • @FeignClient的使用和Spring Boot的版本适配方式

    @FeignClient的使用和Spring Boot的版本适配方式

    这篇文章主要介绍了@FeignClient的使用和Spring Boot的版本适配方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • SpringBoot2.0整合Shiro框架实现用户权限管理的示例

    SpringBoot2.0整合Shiro框架实现用户权限管理的示例

    这篇文章主要介绍了SpringBoot2.0整合Shiro框架实现用户权限管理的示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • SpringBoot实现自定义线程池的方法

    SpringBoot实现自定义线程池的方法

    这篇文章主要介绍了SpringBoot中的自定义线程池解析,实现自定义线程池重写spring默认线程池的方式使用的时候,只需要加@Async注解就可以,不用去声明线程池类,需要的朋友可以参考下
    2023-11-11
  • Java通过反射,如何动态修改注解的某个属性值

    Java通过反射,如何动态修改注解的某个属性值

    这篇文章主要介绍了Java通过反射,动态修改注解的某个属性值操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • Spring Security实现用户名密码登录详解

    Spring Security实现用户名密码登录详解

    这篇文章主要为大家详细介绍了Spring Security如何实现用户名密码登录功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起了解一下
    2022-10-10
  • java控制台输出数字金字塔示例分享

    java控制台输出数字金字塔示例分享

    这篇文章主要介绍了java控制台输出数字金字塔的示例,控制台输出的缺陷是数字不能完全居中,只能右对齐或左对齐,大家参考使用吧
    2014-01-01

最新评论