Spring如何基于aop实现事务控制

作者:程序晓猿 时间:2021-07-21 11:26:06 

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

来源:https://www.cnblogs.com/chengxuxiaoyuan/p/12309786.html

标签:spring,aop,事务,控制
0
投稿

猜你喜欢

  • 搭建一个基础的Resty项目框架

    2021-06-08 11:12:06
  • DevExpress获取TreeList可视区域节点集合的实现方法

    2023-09-18 15:42:05
  • 深入Java Final

    2022-06-22 09:38:14
  • Android Studio 3.1.3升级至3.6.1后旧项目的兼容操作方法

    2022-03-27 10:15:41
  • Springboot日志开启SLF4J过程解析

    2022-04-23 01:29:57
  • Java后端学习精华之TCP通信传输协议详解

    2021-08-06 03:15:42
  • Springboot文件上传功能的实现

    2021-09-20 12:48:47
  • WinForm 自动完成控件实例代码简析

    2022-06-28 22:02:24
  • Java 集合的Contains和Remove方法

    2022-06-17 05:29:10
  • 设计模式在Spring框架中的应用汇总

    2023-10-22 19:20:09
  • 剑指Offer之Java算法习题精讲链表与二叉树专项训练

    2022-01-12 19:19:01
  • Java Swing组件文件选择器JFileChooser简单用法示例

    2021-09-23 21:00:34
  • Java读写Windows共享文件夹的方法实例

    2022-10-02 02:25:45
  • mybatis注解与xml常用语句汇总

    2022-05-17 18:39:47
  • Android OkHttp代理与路由的彻底理解

    2023-03-17 01:21:51
  • android利用ContentResolver访问者获取手机短信信息

    2022-02-02 15:02:37
  • mybatis水平分表实现动态表名的项目实例

    2023-04-02 22:11:42
  • Android导航栏功能项的显示与屏蔽介绍

    2022-09-27 06:38:55
  • Java实现一个顺序表的完整代码

    2023-09-21 01:00:59
  • SSM使用mybatis分页插件pagehepler实现分页示例

    2022-04-02 00:20:53
  • asp之家 软件编程 m.aspxhome.com