全局性事务控制如何在springboot中配置

一文读懂SpringBoot事务管理 什么是SpringBoot事务,SpringBoot事务和数据库的事务有什么关联?怎么使用SpringBoot事务?SpringBoot的实现原理是什么?事务是指系统进行一系列操作,一旦其中有一个操作失败,都将全部回滚,满足ACID(原子性、一致性、隔离性、持久性)特性,Mysql中Innnodb也使用了事务的概念。SpringBoot事务是指程序执行的过程中,通过代理的方式,将程序的多个业务逻辑/对数据库的多次操作包裹成一个事务,避免部分程序对数据库操作成功导致的数据不一致问题。 阅读详情

开发中,我们一般会利用AOP配置全局性的事务,对指定包下指定的方法(如add,update等)进行事务控制,在springboot中如何实现呢?


@EnableTransactionManagement
@Aspect
@Configuration
public class GlobalTransactionConfig {
    //写事务的超时时间为10秒
    private static final int TX_METHOD_TIMEOUT = 10;

    //restful包下所有service包或者service的子包的任意类的任意方法
    private static final String AOP_POINTCUT_EXPRESSION = "execution (* com.jun.cloud.restful..*.service..*.*(..))";

    @Autowired
    private PlatformTransactionManager transactionManager;

    @Bean
    public TransactionInterceptor txAdvice() {

        /**
         * 这里配置只读事务
         */
        RuleBasedTransactionAttribute readOnlyTx = new RuleBasedTransactionAttribute();
        readOnlyTx.setReadOnly(true);
        readOnlyTx.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);

        /**
         * 必须带事务
         * 当前存在事务就使用当前事务,当前不存在事务,就开启一个新的事务
         */
        RuleBasedTransactionAttribute requiredTx = new RuleBasedTransactionAttribute();
        //检查型异常也回滚
        requiredTx.setRollbackRules(
                Collections.singletonList(new RollbackRuleAttribute(Exception.class)));
        requiredTx.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
        requiredTx.setTimeout(TX_METHOD_TIMEOUT);

        /***
         * 无事务地执行,挂起任何存在的事务
         */
        RuleBasedTransactionAttribute noTx = new RuleBasedTransactionAttribute();
        noTx.setPropagationBehavior(TransactionDefinition.PROPAGATION_NOT_SUPPORTED);

        Map<String, TransactionAttribute> txMap = new HashMap<>();
        //只读事务
        txMap.put("get*", readOnlyTx);
        txMap.put("query*", readOnlyTx);
        txMap.put("find*", readOnlyTx);
        txMap.put("list*", readOnlyTx);
        txMap.put("count*", readOnlyTx);
        txMap.put("exist*", readOnlyTx);
        txMap.put("search*", readOnlyTx);
        txMap.put("fetch*", readOnlyTx);
        //无事务
        txMap.put("noTx*", noTx);
        //写事务
        txMap.put("add*", requiredTx);
        txMap.put("save*", requiredTx);
        txMap.put("insert*", requiredTx);
        txMap.put("update*", requiredTx);
        txMap.put("modify*", requiredTx);
        txMap.put("delete*", requiredTx);

        NameMatchTransactionAttributeSource source = new NameMatchTransactionAttributeSource();
        source.setNameMap(txMap);

        return new TransactionInterceptor(transactionManager, source);
    }

    @Bean
    public Advisor txAdviceAdvisor() {
        AspectJExpressionPointcut pointcut = new AspectJExpressionPointcut();
        pointcut.setExpression(AOP_POINTCUT_EXPRESSION);
        return new DefaultPointcutAdvisor(pointcut, txAdvice());
    }

}

如果配置了多个事务管理器,参看https://blog.youkuaiyun.com/catoop/article/details/50595702

ROS-Industrial :simple_message 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录1. 概述2. 协议(Protocol)3. HEADER解析3.1 MSG_TYPE3.2 COMM_TYPE3.3 REPLY CODE 1. 概述 Simple_Message是ROS-Industrial的一部分,定义了用于与工业机器人控制器通信的简单消息连接协议。另外还包括处理连接受限系统的处理器和管理器类。 2. 协议(Protocol) 简单消息(simplemessage)协议定义了ROS的驱动层和机器人控制器之. 阅读详情

相关推荐

影刀初级考试操作题2

题型E主要考察了Excel的操作,总体上难度不大,流程也很少。有些细节地方比如是追加还是覆盖,多试几次就没问题了。

weisili2012的博客 1万+

SpringBoot 全局事务配置

传统springboot实现事务只需要在方法上添加@Transactional注解,但是需要在所有的service都加上事务,相对比较麻烦,随着项目的庞大,功能模块会随之增多,所以就需要采用AOP的方式实现全局事务处理。 全局事务配置通过AOP切面指定方法前缀切入点,从而对指定的方法统一进行事务控制,根据方法名前缀来匹配到具体方法,进行事务配置

sout-lanys 9279

【视线追踪】视线追踪的性能评估框架 及 基础知识

文章目录一、 前言二、 眼球追踪基础1. 眼动类型研究2. 基本设备3. 校准 calibration4. 眼球视线和头部姿态的关系5. 视线追踪精确度的评估三、 视线估计算法1. 基于2维回归2. 基于3D模型1) 单摄像头2) 多摄像头3. 基于交叉比4. 基于外观5. 基于眼睛形状的方法四、 实现估计的应用1. 电脑2. 电视3. 头戴设备4. 汽车5. 手持设备6. 设备配置五、 视线追踪的性能指标和错误原因1. 不同平台之间差异性很大2. 影响视线追踪可用性的因素六、 视线追踪系统的性能评估框架1

火火的博客 5320

Spring Boot系列(六)、SpringBoot配置全局事务处理

五、SpringBoot数据校验、全局事务以及异常处理5.1 Spring Boot数据校验 5.1 Spring Boot数据校验 我们可能会经常需要对传入的参数进行校验,如果数据比较少的时候还比较容易处理,但当数据比较多的时候会显得比较麻烦,而且处理不当的时候,还会代码重复。这时候就需要对参数进行校验了,而Spring Boot采用的是Validation对数据进行校验。 SpringBoot对表单数据校验的技术特点,使用了Hibernate-validation校验框架。 ......

一宿君 5170

告别屏幕闪烁:手把手教你用示波器抓取并分析MIPI DSI信号(以RK平台为例)

本文详细介绍了如何利用示波器抓取并分析MIPI DSI信号,以解决LCD屏幕闪烁、花屏等问题。以RK平台为例,从工具准备、示波器参数配置到信号捕获与波形解读,提供了一套完整的调试方案,帮助硬件工程师快速定位和解决显示接口信号完整性问题。

weixin_33704591的博客 656

Caffeine:为每个元素动态设置过期时间

Caffeine利用expireAfter方法实现为每个元素动态设置过期时间

大数据开发、JAVA开发、人工智能AI 1万+

SpringBoot全局事务管理

一、背景 springboot实现事务只需要在方法上添加@Transactional注解,但是需要在所有的service都加上事务,那就挺麻烦的。所以就需要采用AOP的方式实现全局事务处理。 考虑到作为不同项目来说,需要对多个不同的模块配置不同的超时时间的需求,所以采用注解的形式进行配置。 二、实现 1、创建注解类 @Target(ElementType.TYPE) @Retention(Rete...

会忆 3560

OTP语音芯片SOP8的前世今生_如九齐_硕呈_钰绅等以及国产方案KT148A

语音芯片ic的其中一个品类,就是SOP8封装的OTP语音芯片,非常的经典和常用。源头的供应商基本都是台系的原厂,比如:九齐、硕呈、佑华等等,其中佑华就算是鼻祖了,早期的4位机也是在语音市场得到了升华。 OTP(One Time Programmable)是单片机的一种存储器类型,意思是一次性可编程:程序烧入单片机后,将不可再次更改和清除。

qyvhome的博客 1873

SpringBoot AOP配置全局事务

SpringBoot的出现使得项目中使用事务变得非常简单,有两种使用方式,适合小型项目的注解事务(声明式事务管理),适合大型项目的全局事务。 1、注解事务。(次要) 注解事务使用只用两步,开启事务注解功能,使用事务注解功能,并且每步都只有使用一个注解。 第一步:开启事务注解功能@EnableTransactionManagement 在主启动类中添加注解@EnableTransactionManagement即可。 package com.gx; import org.springframework.bo

qq_44211323的博客 5677

记录思科cisco交换机升级iso步骤

Cisco Nexus 93180交换机版本升级

a635161812的博客 4378

交换机端口模式详解:Access、Hybrid、Trunk

交换机是网络中至关重要的组件之一,用于连接各种设备并启用数据的高效流动。为了更好地管理和控制网络流量,交换机提供了不同的端口模式,其中包括Access、Hybrid和Trunk。本文将深入探讨这三种端口模式,详细解释它们的配置、特性和应用场景,以帮助网络管理员更好地理解和优化网络架构。

网络技术联盟站 4016

SpringBoot全局异常与事务控制

一、Spring Boot 事务支持       在使用Jdbc 作为数据库访问技术时,Spring Boot框架定义了基于jdbc的PlatformTransactionManager接口的实现DataSourceTransactionManager,并在Spring Boot应用启动时自动进行配置。如果使用jpa的话Spring Boot同样提供了对应实现。 数据访问技术 实现 JDBC DataSourceTransactio

qq_46197017的博客 1263

yolo 图像检测、关键点检测单摄像头测量物体尺寸长度大小

new_distance/real_size (待求物体像素距离与实际距离比值)= distance / metric_length (参照物像素距离与实际距离比值)然后运行size_demo进行要测量的物体进行关节点检测距离;metric_length是上面耳机选取的两个点的实际物理距离,大概6cm;这里用的windows。通过关键点检测识别物体关键点的像素距离,然后参考比例尺计算实际距离。2)关键点算法这里用的现有的进行测试,实际场景需要自己训练。这里拿这模型推理出的关键点坐标进行后续长度计算。

weixin_42357472的博客 2528

Java程序设计:spring boot(13)——全局异常与事务控制

在使⽤ Jdbc 作为数据库访问技术时,Spring Boot框架定义了基于jdbc的PlatformTransaction Manager 接⼝的实现 DataSourceTransactionManager,并在 Spring Boot 应⽤ 启动时⾃动进⾏配置。如果使⽤ jpa 的话 Spring Boot 同样提供了对应实现。

茜茜西西的博客 1107

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

SpringBoot初始化几大招式,看了终于明白了

3、 @Bean initMethod方法我们在声明一个Bean的时候,可以同时指定一个initMethod属性,该属性会指向Bean的一个方法,表示在初始化后执行。如下所示:然后,这里将initMethod指向init方法,相应的我们也需要在Bean中实现这个方法:上面的代码是基于Java注解的方式,使用Xml配置也可以达到同样的效果:4、 构造器注入如果依赖的字段在Bean的构造方法中声明,那么Spring框架会先实例这些字段对应的Bean,再调用当前的构造方法。此时,构造方法中的一些操作也是安全的,如

H1767410的博客 1252

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

springboot中用@Transational控制事务的注意事项

事务是javaEE开发中一个很重要的概念,他控制了对多表操作的一组事务同时成功或同时失败。关于事务的一些概念与应用,相信已经很清楚了,这里不对事务做过多的介绍,谈一谈关于springboot中事务的使用的一些注意事项。 一、springboot配置事务的方式 简单的来说,springboot中配置事务可以通过@Transational注解的方式和配之类的方式进行全局性的事务配置。都是通过动态代理实现的,被代理前后执行的方式也相同,只是前者是springboot自带的切点拦截,后者自定义的切点拦截 1.@Tr

qq_42846022的博客 1029

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

事务及SpringBoot中的事务开启

1.什么是事务?1.什么是事务?事务是指在数据库管理系统中执行的一系列操作的逻辑单元。事务可以由一个或多个数据库操作(例如插入、更新、删除等)组成,这些操作被视为一个不可分割的工作单元。在事务中,要么所有的操作都成功执行,要么所有的操作都不执行,不会出现部分操作成功而部分操作失败的情况。传播行为(Propagation):指定事务的传播行为,即定义了事务方法调用之间的关系。隔离级别(Isolation Level):指定事务的隔离级别,即定义了事务之间的可见性和并发控制的程度。

m0_70770402的博客 6959

springboot实现全局事务管理

首先需要实现全局事务管理,你得知道事务的原理包括一些事务的基础概念。

lucky_love816的博客 645

SpringBoot教程(二十五) | SpringBoot集成AOP实现事务管理

SpringBoot集成AOP实现事务管理

qq_20236937的博客 639

Spring Boot全局事务解释及使用(一)

spring事务解释及全局事务使用 ...

schcilin的博客 7349

springboot 事务配置

1、全局配置 @EnableTransactionManagement @Aspect @Configuration public class GlobalTransactionConfig { //写事务的超时时间为10秒 private static final int TX_METHOD_TIMEOUT = 10; //restful包下所有service包或者service的子包的任意类的任意方法 private static final String AOP

yuguang的博客 4826

SpringBoot的事务处理

SpringBoot的事务处理全局的事务处理使用方法在方法上使用@Transactional(rollbackFor = Exception.class)的事务处理方式使用方法 全局的事务处理 使用方法 特别提醒:mysql对应的表必须是InnoDB型才可支持事务,myisam不支持事务 导入springboot的aop依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId&

xiao_yu_优快云的博客 681

Springboot 完整搭建快速入门,必看!

前言 手把手教你Springboot微服务项目搭建快速入门,通过本文学习Springboot的搭建快速入门,掌握微服务大致的配置服务,后续将会继续将核心组件引入到项目中,欢迎关注,点赞,转发。 Springboot项目搭建将会从以下几个方面进行项目搭建快速入门 一、项目创建 新建Maven项目 根据上面操作即可完成项目搭建 二、pom.xml依赖添加 接下来在pom.xml引入springboot相关依赖 引入S...

Xgx120413的专栏 758

️ 【JAVA实战】手把手教你SpringBoot中事务@Transactional的正确姿势

在Java中,事务(Transaction)是指作为单个逻辑工作单元执行的一系列操作。当涉及到数据库操作时,事务确保了数据的完整性和一致性,即使在出现故障的情况下也能保证数据的安全。事务的处理通常在数据库管理系统(DBMS)层面进行,但在Java环境中,事务的管理也可以通过编程框架如Spring或Java Transaction API (JTA)来控制。以上即为SpringBoot的事务开启、配置与使用方式!更多资源也可关注微信公众号获取!

技术分享、程序员趣事、行业趋势等内容! 2523

使用Spring Boot实现事务管理

在复杂的应用程序中,一个方法可能需要调用另一个带有事务的方法。例如,如果一个事务方法调用另一个事务方法,我们可以定义它们之间的事务传播行为。Spring Boot提供了强大而灵活的事务管理功能,通过简单的注解和配置,开发人员可以轻松实现对数据操作的事务控制。Spring Boot还支持设置事务的隔离级别(Isolation Level),以控制并发事务可能导致的数据访问问题。在Spring Boot中,事务管理是通过注解来实现的,主要使用的注解是。,这意味着它会在一个新的事务中执行,而不受外部事务的影响。

技术研究中心 1495

SpringBoot项目之事务管理

要想实现事务可以在业务层的类,方法,接口上添加@Transactional注解,该注解的作用就是将该方法交给Spring事务管理,在方法执行之前开开启事务,方法结束之后关闭事务,方法出现异常则回滚事务。事务传播行为,当调用了一个被@Transactional注解定义的方法时,若该属性为Required时表示若动调用的方法已经开启事务则加入事务,没有则创建一个事务。事务就是一组操作的集合,它是一个不可分割的工作单位,这些操作要么同时成功要么同时失败。rollbackFor属性。transaction属性。

Fuffu的博客 219
上一篇: 使用Hibernate-Validator优雅的校验参数
下一篇: truncate、drop、delete区别
余生之君
博客等级 码龄10年 246粉丝 98原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值