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); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
spring boot如何使用AOP统一处理web请求
为了保证服务的高可用,及时发现问题,迅速解决问题,为应用添加log是必不可少的. 但是随着项目的增大,方法增多,每个方法加单独加日志处理会有很多冗余 那在SpringBoot项目中如何统一的处理Web请求日志? 基本思想: 采用AOP的方式,拦截请求,写入日志 AOP 是面向切面的编程,就是在运行期通过动态代理的方式对代码进行增强处理 基于AOP不会破坏原来程序逻辑,因此它可以很好的对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率.
-
springboot如何使用AOP做访问请求日志
这篇文章主要介绍了springboot如何使用AOP做访问请求日志,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 springboot中使用AOP做访问请求日志:这次引入springboot的aop和日志 1.pom.xml引入: <!--springBoot的aop,已经集成了spring aop和AspectJ--> <dependency> <groupId>org.springframework.boot<
-
Spring Boot 通过AOP和自定义注解实现权限控制的方法
本文介绍了Spring Boot 通过AOP和自定义注解实现权限控制,分享给大家,具体如下: 源码:https://github.com/yulc-coding/java-note/tree/master/aop 思路 自定义权限注解 在需要验证的接口上加上注解,并设置具体权限值 数据库权限表中加入对应接口需要的权限 用户登录时,获取当前用户的所有权限列表放入Redis缓存中 定义AOP,将切入点设置为自定义的权限 AOP中获取接口注解的权限值,和Redis中的数据校验用户是否存在该权限,如果R
-
Spring boot通过AOP防止API重复请求代码实例
这篇文章主要介绍了Spring boot通过AOP防止API重复请求代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 实现思路 基于Spring Boot 2.x 自定义注解,用来标记是哪些API是需要监控是否重复请求 通过Spring AOP来切入到Controller层,进行监控 检验重复请求的Key:Token + ServletPath + SHA1RequestParas Token:用户登录时,生成的Token Servlet
-
SpringBoot整合aop面向切面编程过程解析
这篇文章主要介绍了SpringBoot整合aop面向切面编程过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术.AOP是Spring框架中的一个重要内容,它通过对既有程序定义一个切入点,然后在其前后切入不同的执行内容,比如常见的有:打开数据库连接/关闭数据库连接.打开事务/关闭事务.记录日
-
Springboot使用@Valid 和AOP做参数校验及日志输出问题
项目背景 最近在项目上对接前端的的时候遇到了几个问题 1.经常要问前端要请求参数 2.要根据请求参数写大量if...else,代码散步在 Controller 中,影响代码质量 3.为了解决问题1,到处记日志,导致到处改代码 解决方案 为了解决这类问题,我使用了@Valid 做参数校验,并使用AOP记录前端请求日志 1.Bean实体类增加注解 对要校验的实体类增加注解,如果实体类中有List结构,就在List上加@Valid @Valid注解 注解 备注 @Null 只能为null @NotNu
-
springboot配置aop切面日志打印过程解析
这篇文章主要介绍了springboot配置aop切面日志打印过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.SpringBoot Aop说明 1. Aop AOP(Aspect-Oriented Programming,面向切面编程),它利用一种"横切"的技术,将那些多个类的共同行为封装到一个可重用的模块.便于减少系统的重复代码,降低模块之间的耦合度,并有利于未来的可操作性和可维护性. 2. AOP相关概念: Aspect
-
Springboot通过aop实现事务控制过程解析
spring的事务控制本质上是通过aop实现的. 在springboot中使用时,可以通过注解@Transactional进行类或者方法级别的事务控制,也可以自己通过spring提供的事务管理器手动控制事务 一. @Transactional注解进行进行类或者方法级别的事务控制 不需要进行特别的设置,按照正常的配置整合spring和mybatis后,在需要进行事务控制的类上或者方法上加上 @Transactional注解,即可对其进行事务控制. 二.手动控制事务 当需要在一个方法的内部进行事务控
-
spring 声明式事务实现过程解析
这篇文章主要介绍了spring 声明式事务实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 /** * 声明式事务: * * 环境搭建: * 1.导入相关依赖 * 数数据 * 3.给方法上标注 @Transactional 表示当前方法是一个事务方法: * 4. @EnableTransactionManagement 开启基于注解的事务管理功能:据源.数据库驱动.Spring-jdbc模块 * * 2.配置数据源.JdbcTempl
-
SpringBoot多模块项目框架搭建过程解析
这篇文章主要介绍了SpringBoot多模块项目框架搭建过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 创建根项目,New Project 创建一个名为 sms-bomber 的 SpringBoot 新项目,打包为 JAR 的即可,这里只添加 Lombok 与 spring-boot-starter-web 依赖,这两个依赖会传递给所有子模块,删除创建完成的项目中的 .mvn\ src\ mvnw mvnw.cmd 创建启动模块,根目
-
详解SpringBoot中JdbcTemplate的事务控制
目录 前言 原生Jdbc的事务控制 Spring的声明式事务控制 尝试JdbcTemplate的事务控制 TransactionTemplate的编程式事务控制 前言 JdbcTemplate是spring-jdbc提供的数据库核心操作类,那对JdbcTemplate进行事务控制呢? 我的环境:spring-boot-2.1.3,druid-1.1.3. 原生Jdbc的事务控制 即,批处理+自动提交的控制方式, public static void demo(String[] args) thr
-
Spring如何基于aop实现事务控制
spring的事务控制本质上是通过aop实现的. 在springboot中使用时,可以通过注解@Transactional进行类或者方法级别的事务控制,也可以自己通过spring提供的事务管理器手动控制事务 一. @Transactional注解进行进行类或者方法级别的事务控制 不需要进行特别的设置,按照正常的配置整合spring和mybatis后,在需要进行事务控制的类上或者方法上加上 @Transactional注解,即可对其进行事务控制. 二.手动控制事务 当需要在一个方法的内部进行事务控
-
SpringBoot实现devtools实现热部署过程解析
1.修改pom.xml文件 <project> <dependencies> <!-- 使用devtool热部署插件(推荐) --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional>
-
Spring注解 TX声明式事务实现过程解析
环境搭建导入 maven依赖 <!--spring提供的数据库操作工具--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>5.0.2.RELEASE</version> </dependency> <!--c3p0 数据库连接池--> &
-
Spring AOP AspectJ使用及配置过程解析
这篇文章主要介绍了Spring AOP AspectJ使用及配置过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 AspectJ是一个基于Java语言的AOP框架,Spring2.0以后新增了对AspectJ切点表达式支持.因为Spring1.0的时候Aspectj还未出现; AspectJ1.5中新增了对注解的支持,允许直接在Bean类中定义切面.新版本的Spring框架建 议我们都使用AspectJ方式来开发AOP,并提供了非常灵活且
随机推荐
- 使用DataAdapter填充多个表(利用DataRelation)的实例代码
- Go语言interface 与 nil 的比较
- 编写Js代码要注意的几条规则
- VBS 提取狗狗影视中的ED2K连接的实现代码
- JS 实现BASE64_ENCODE和BASE64_DECODE(实例代码)
- 小型Drupal数据库备份以及大型站点MySQL备份策略分享
- JS 实现banner图片轮播效果(鼠标事件)
- jquery 实现上下滚动效果示例代码
- JavaScript学习笔记之函数记忆
- javascript ajax 仿百度分页函数
- 基于Bootstrap框架实现图片切换
- SQLServer2008的实用小道具 merger使用介绍
- JavaScript学习笔记之JS事件对象
- 轻松架设Windows 2003中WEB服务器
- Android中使用AsyncTask实现下载文件动态更新进度条功能
- python读写json文件的简单实现
- Python实现发送email的几种常用方法
- C#数字图象处理之图像灰度化方法
- PHP 简单日历实现代码
- java实现的连接数据库及模糊查询功能示例