事务框架之声明事务(自动开启,自动提交,自动回滚)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 ...
随机推荐
- .Net Core中使用ExceptionFilter
.Net Core中有各种Filter,分别是AuthorizationFilter.ResourceFilter.ExceptionFilter.ActionFilter.ResultFilter. ...
- Linux - 修改系统的max open files、max user processes(附ulimit的使用方法)【转载】
Linux - 修改系统的max open files.max user processes(附ulimit的使用方法)目录 1 问题说明2 修改max open files3 修改max user ...
- Apache Druid 的集群设计与工作流程
导读:本文将描述 Apache Druid 的基本集群架构,说明架构中各进程的作用.并从数据写入和数据查询两个角度来说明 Druid 架构的工作流程. 关注公众号 MageByte,设置星标点「在看」 ...
- hadoop HDFS扩容
1.纵向扩容(添加硬盘) 1.1 添加硬盘 确定完成添加,运行 lsblk 查看硬盘使用情况 1.2 硬盘分区 fdisk /dev/sdb #对新硬盘sdb进行分区 m 帮助 n 添加一个分区 p ...
- linux-TFTP服务
1.TFTP协议简介TFTP,全称是 Trivial File Transfer Protocol(简单文件传输协议),基于 UDP 实现,该协议简单到只能从远程服务器读取数据或向远程服务器上传数据. ...
- 添加bash命令
cd ~/.bash vim mya 键入 #!/bin/bash hostname -i :x 保存退出 source ~/.bash_profile 生效
- AX中Json转化成表记录
static void JsonToTable(str _json,Common _Common){ sysdictTable dictTable; TableId ...
- 设计模式之委派模式,大名鼎鼎的Spring都在用
什么是委派模式 虽然说委派模式不属于Gof23中设计模式,但这并不影响它成为一种经典的设计模式. "委派"字面意思就是指派一件事情给某人.类比到生活中的场景,比如项目leader指 ...
- Linux中MySQL二进制安装步骤
MySQL二进制安装步骤 安装依赖环境 [root@node3 ~]# yum -y install libaio 将mysql-5.7.26-linux-glibc2.12-x86_64.tar.g ...
- 华为面试题(JAVA版)
[编程题] 扑克牌大小时间限制:10秒空间限制:131072K扑克牌游戏大家应该都比较熟悉了,一副牌由54张组成,含3~A,2各4张,小王1张,大王1张.牌面从小到大用如下字符和字符串表示(其中,小写 ...