事务框架之声明事务(自动开启,自动提交,自动回滚)Spring AOP 封装
利用Spring AOP 封装事务类,自己的在方法前begin 事务,完成后提交事务,有异常回滚事务
比起之前的编程式事务,AOP将事务的开启与提交写在了环绕通知里面,回滚写在异常通知里面,找到指定的方法(切入点),代码如下:
代码在这个基础上重构:
https://www.cnblogs.com/pickKnow/p/11135310.html
@Component
@Aspect
@Scope("prototype")
public class AopTransaction { @Autowired
private TransactionUtils transactionUtils; @Around("execution (* com.hella.thread.aoptransaction.service.UserService.addUser(..) )")
public void around(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
//不要try catch 不然回滚不了,一直占用资源
System.out.println("开启事务");
TransactionStatus transactionStatus = transactionUtils.begin();
proceedingJoinPoint.proceed();
transactionUtils.commit(transactionStatus);
System.out.println("提交事务");
} @AfterThrowing("execution (* com.hella.thread.aoptransaction.service.UserService.addUser(..) )")
public void afterThrowing() {
System.out.println("事务开始回滚");
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
} }
那service 层方法里面就不需要再写事务的开启,提交,回滚了。
@Service
public class UserServiceImpl implements UserService { @Autowired
private UserDao userDao;
@Override
public void addUser() {
// 添加到数据库
System.out.println("开始添加");
userDao.add(1, "tom", "12");
}
}
事务框架之声明事务(自动开启,自动提交,自动回滚)Spring AOP 封装的更多相关文章
- CI框架的事务开启、提交和回滚
1.运行事务 $this->db->trans_start(); // 开启事务$this->db->query('一条SQL查询...');$this->db-> ...
- sqlserver事务怎么开启 怎么提交 怎么回滚
1.自动transaction每句statement都是一个transaction.例一个update指令更新多笔纪录, 要就全部成功, 只要失败,全部会回复原值. 2.ExplicitTransac ...
- JDBC_事务概念_ACID特点_隔离级别_提交commit_回滚rollback
事务的概念 一组要么同时执行成功,要么同时执行失败的SQL语句,是数据库操作的一个执行单元! 事务开始于: 连接到数据库上,并执行一条DML语句(insert,update或delete),前一个事务 ...
- JDBC03 利用JDBC实现事务提交与回滚【调用Connection中的方法实现事务管理】
目录 1 Connection中的重用方法 2 JDBC事务管理经典案例 1 Connection类中常用的方法回顾 1.1 Statement createStatement() throws SQ ...
- J2EE分布式事务中的提交、回滚方法调用异常。
这个是昨天上班的时候,写一个后台程序的调试程序时碰到的问题,和项目经理纠结了一天,最后搞定了.于是今天上班正好闲着,花了几乎一天的时间去网上找各种相关的资料.目前了解的内容如此: 根据使用的weblo ...
- 14.3.2.2 autocommit, Commit, and Rollback 自动提交 提交和回滚
14.3.2.2 autocommit, Commit, and Rollback 自动提交 提交和回滚 如果自动提交模式被启用,在InnoDB里, 所有的用户活动发生在一个事务里, 每个SQL语句 ...
- ASP.NET(C#)事务的创建、提交以及回滚 (附代码)
1.事务是什么? 事务是应用程序中一系列严密的操作,所有的操作必须全部成功完成,否则每个操作中的所有更改都会被撤销.也就是事务具有原子性,一个事务中的一系列操作要么全部成功,要么 ...
- 【转】批量复制操作(SqlBulkCopy)的出错处理:事务提交、回滚
原文地址:http://blog.csdn.net/westsource/article/details/6658109 默认情况下,批量复制操作作为独立的操作执行. 批量复制操作以非事务性方式发生, ...
- 如何在mysql下实现事务的提交与回滚
最近要对数据库的数据进行一个定时迁移,为了防止在执行过程sql语句因为某些原因报错而导致数据转移混乱,因此要对我们的脚本加以事务进行控制. 首先我们建一张tran_test表 CREATE TABLE ...
随机推荐
- 【视频+图文】带你快速掌握Java中含break语句的双重for循环
双重for循环掌握后,我们就一起来看看双重for循环的进阶内容一之带break语句的双重for循环. 双重for循环[视频+图文]讲解传输门:点击这里可去小乔的哔哩哔哩观看~ 带continue语句的 ...
- 在WPF(core版本)中引用外部字体不可用问题说明
这几天使用WPF写软件,想引用外部字体,于是下载了字体文件: 然后在App.xaml中添加了如下代码: <FontFamily x:Key="Digital-7 Mono"& ...
- 峰哥说技术:07-SpringBoot 正好Thymeleaf视图
Spring Boot深度课程系列 峰哥说技术—2020庚子年重磅推出.战胜病毒.我们在行动 07 峰哥说技术:SpringBoot 正好Thymeleaf视图 Spring Boot视图介绍 虽然 ...
- 小白学 Python 数据分析(15):数据可视化概述
人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...
- Android开发进阶 -- 通用适配器 CommonAdapter
在Android开发中,我们经常会用到ListView 这个组件,为了将ListView 的内容展示出来,我们会去实现一个Adapter来适配,将Layout中的布局以列表的形式展现到组件中. ...
- 单列集合List
1.Vector和ArrayList以及LinkedList区别和联系.应用场景 线程安全: Vector:如果创建Vector时没有指定容量,则默认容量为10,底层基于数组实现,线程是安全的,底层采 ...
- js 拖拽实现面向对象
1.js 支持面向对象编程,但只是基于面向对象,不使用类或者接口.2.演变 工厂模式------->构造函数模式---------->原型模式 工厂模式的缺点: ①函数内部new ,不太符 ...
- emWin模拟器Visual Studio开发时无法printf打印的问题
1.emWin模拟器 为了方便用户学习evWin框架,Segger设计了一个PC仿真的工具,可以测试绝大部分GUI的功能,除了方便使用者学习之外,还可以加速项目开发进度.毕竟在PC上用Visual S ...
- 使用JDBC工具类模拟登陆验证-Java(新手)
模拟登陆验证: package JdbcDome; import java.sql.Connection; import java.sql.PreparedStatement; import java ...
- Swift4.1 新特性compactMap函数
关于compactMap函数 苹果在Swift 4.1中新增compactMap函数,用来代替flatMap函数. 在Swift标准库中compactMap定义如下 public func compa ...