Spring事物

Spring事务的实现方式 spring事务 阅读详情

Spring事物

基本原理(AOP):对执行方法前后进行拦截,然后在目标方法开始之前创建或加入一个事物,
在执行完目标方法之后,根据执行情况提交或者回滚事物。

spring事务回滚规则

指示spring事务管理器回滚一个事务的推荐方法是在当前事务的上下文内抛出异常。spring事务管理器会捕捉任何未处理的异常,然后依据规则决定是否回滚抛出异常的事务。

默认配置下,spring只有在抛出的异常为运行时unchecked异常时才回滚该事务,也就是抛出的异常为RuntimeException的子类(Errors也会导致事务回滚),而抛出checked异常则不会导致事务回滚。

可以明确的配置在抛出那些异常时回滚事务,包括checked异常。也可以明确定义那些异常抛出时不回滚事务。

还可以编程性的通过setRollbackOnly()方法来指示一个事务必须回滚,在调用完setRollbackOnly()后你所能执行的唯一操作就是回滚。

@Transactional注解
在这里插入图片描述

用法

@Transactional 可以作用于接口、接口方法、类以及类方法上。当作用于类上时,该类的所有 public方法将都具有该类型的事务属性,同时,我们也可以在方法级别使用该标注来覆盖类级别的定义。

虽然 @Transactional 注解可以作用于接口、接口方法、类以及类方法上,但是 Spring 建议不要在接口或者接口方法上使用该注解,因为这只有在使用基于接口的代理时它才会生效。另外, @Transactional 注解应该只被应用到 public 方法上,这是由 Spring AOP的本质决定的。如果你在 protected、private或者默认可见性的方法上使用 @Transactional 注解,这将被忽略,也不会抛出任何异常。

默认情况下,只有来自外部的方法调用才会被AOP代理捕获,也就是,类内部方法调用本类内部的其他方法并不会引起事务行为,即使被调用方法使用@Transactional注解进行修饰。

@Transactional(readOnly = true)
public class DefaultFooService implements FooService {

  public Foo getFoo(String fooName) {
    // do something
  }

  // these settings have precedence for this method
  //方法上注解属性会覆盖类注解上的相同属性
  @Transactional(readOnly = false, propagation = Propagation.REQUIRES_NEW)
  public void updateFoo(Foo foo) {
    // do something
  }
}
Spring : Spring @Transactional事物创建 1.美图 2.前文回顾 先来回顾一下事物创建的代码片段: try { boolean newSynchronization = (getTransactionSynchronization() != SYNCHRONIZATION_NEVER); // 创建DefaultTransactionStatus对象实例 DefaultTransactionStatus stat... 阅读详情

相关推荐

RedPitaya火龙果板基础操作

火龙果板基础操作一级目录二级目录三级目录 一级目录 二级目录 三级目录

qq_41523340的博客 9712

一起聊聊@Transaction 注解的那些坑

1、分享背景 在项目开发中经常会用到具有事务的场景,而在我们的项目中主要是通过@Transaction 注解去实现事务,但是在使用的过程中可能会有一些不是特别合理的地方,不正当的使用事务可能会面临很多的问题,比如:事务失效,链接被耗光,甚至发生死锁的情况; 2、分享的目的 在以后的开发过程中能够更合理的使用事务,清晰的知道事务中每个参数的作用,以及整个事务的核心执行流程等; 3、在使用注解事务的过程中不甚合理的地方; 1、事务方法的粒度太大导致事务执行时间可能会很长; 2、事务中有跨服务调.

hery的博客 5590

使用kmplot在线进行生存分析

欢迎关注”生信修炼手册”!kmplot是一个生存分析的在线工具,最初是设计用来对肝癌中的miRNA进行生存分析,对应的文章发表在scientific reports上,链接如下https...

庐州月光的博客 1万+

对于Spring事物的理解

对于Spring中的transaction的一些理解

EDG_Clearlove_7的博客 286

未来智能家居解决方案:AI应用架构师的前沿探索

当你加班到深夜回家时,门锁自动识别你的脚步声解锁,玄关灯渐亮成你最爱的暖光,空调早已调到25℃(你夏天的习惯温度),音箱播放着最近循环的爵士乐,茶几上的智能水壶烧好了温水——这不是科幻电影,而是未来智能家居的日常。如何让“冰冷的设备”变成“懂你的伙伴”。我们将深入探讨五大前沿技术(边缘AI、多模态融合、联邦学习、数字孪生、个性化推荐)的底层原理,用“家里的小管家”“邻居互相学习”等生活化比喻简化复杂概念,结合代码示例与架构图还原实现流程,并通过智能卧室、智能厨房等真实案例展示落地路径。

AI天才研究院 1408

从交换机安全配置,看常见局域网攻击

前言 构建零信任网络,自然离不开网络准入(NAC),这就涉及到交换机的一些安全测试,于是有了此文《从交换机安全配置看常见局域网攻击》。 交换机安全配置 如本文标题所说从交换机安全配置看常见的局域网攻击,那么下面提到的各种攻击方式,自然是建立在交换机安全配置之上来说的。我们通过h3c官方提供的《H3C 交换机安全加固手册》和《安全配置指导》,从这两份手册可以看出交换机支持的安全配置非常多,基本已经覆盖了各种我们熟知局域网攻击。下面就挑几个典型的攻击方式进行演示。 arp欺骗 【一>所有资源获取&lt

kali_Ma的博客 1万+

Spring的事物管理

本文介绍了Spring对事物管理的两种方式,即编程式事物和声明式事物。 一.认识事物 事物是以可控制的方式限定程序对数据资源进行访问的一组操作;它的目的是为了保证程序运行中数据资源的正确性和完整性,为了达到这个目的,事物拥有以下四个属性: 1.原子性:原子性要求事物所包含的这一组操作是一个不可分割的整体,要么这组操作全部成功,要么其中一个失败,即整个事物失败; 2.一致性:一致性要求事

wj481199的专栏 540

宏基因组功能注释实战:从CAZyme到VFDB的完整流程(含数据库下载与脚本优化)

本文详细介绍了宏基因组功能注释的完整流程,涵盖CAZyme、eggNOG、CARD和VFDB四大核心数据库的实战应用。从环境配置、数据库下载与预处理到注释流程执行与优化,提供了全面的操作指南和脚本优化建议,帮助研究人员高效完成宏基因组数据分析。特别针对CAZyme注释等关键步骤给出了参数优化方案和常见问题排查方法。

weixin_29289821的博客 294

X书x-mini-sig_x-mini-mua

X书的tiny风控代码,成功运行x-mini-sig|x-mini-mua

Codeooo 博客 1万+

UDS诊断服务基础详解之二19服务

本文主要介绍UDS统一诊断服务的19 01服务,包含状态位和故障码的解析以及19 01服务的具体说明

车载网络小D的博客 1万+

spring的事物

不知道为啥,重新写了一遍声明式事物,就可以使用了,原来的报错找不到Bean。事物处理后,对数据的修改是永久的,一旦执行事物成功,就刷新到数据库。使用这种方式的前提是,已经集成了spring-mybatis。这是我第三次接触事物了,mysql一次,以前的也看过一次。所以,我们开启事物,就是为了利用上面的四个特点,解决问题。在事物的开启和结束,数据库的完整性不被破坏。多线程时,要保证数据的安全,也就是并发安全。至于集成mybatis的代码,在前面写过博客。多条sql保证同时成功,同时失败。打代码还是太马虎了。

qx020814的博客 1980

使用Simulink对氢燃料电池与锂电池的混合储能系统进行建模

本文介绍了基于Simulink的氢燃料电池与锂电池混合储能系统建模与协同控制方法。系统通过氢燃料电池提供稳定能源,锂电池实现快速响应,结合DC-DC变换器和负载管理器实现动态调控。详细阐述了从模型创建、关键模块配置到控制器设计的完整流程,重点说明了功率分配算法和充放电控制策略的实现。通过仿真分析验证了系统在不同负载条件下的性能表现,包括响应速度、工作效率和稳定性等指标。该方案为新能源混合储能系统的设计与优化提供了实用指导,有助于提升系统可靠性和延长电池寿命。

amy_mhd的博客 314

Spring的事物配置

基于同事搭好的SSH框架,在里面添加点功能,写完代码,自己测试的时候发现在通过hibernateTemplate向数据库添加数据时报错: org.springframework.dao.InvalidDataAccessApiUsageException: Write operations are not allowed in read-only mode (FlushMode.NEVE

老杨的专栏 810

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Spring事物管理

事物可以看做是由对数据库的若干操作组成的一个单元事物是一系列的动作,一旦其中有一个动作出现错误,必须全部回滚,提供将事物中对数据库的所有已完成的操作全部撤销,滚回到事物开始的状态,避免出现由于数据不一致而导致接下来的一系列错误.事物的出现是为了确保数据的完整性和一致性,确保用户的每一个操作都是可靠的,事物中的每一步操作都必须执行,只要有发生异常就回退到事物未开始的操作状态,这些事物要么都执行,要么都取消,从而保证数据满足原子性,一致性.在目前的企业开发中,事物的管理是必不可少的.

weixin_52629592的博客 544

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Spring + mybatis事物管理

Spring和mybatis结合后,由Spring接管mybtis事物。此配置适应于扩展性事物。具体配置如下 第一步:applicationContext.xml相关配置如下: <bean id="transactionManager" class="org.springframework.jdbc.

wangzhongfeng1112的专栏 1555

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Spring4-事物控制

事物概念完成一件事物需要执行多个操作,那么在之前操作进行后,后面的操作可能会产生异常,此时就需要一个事物管理的方法保证数据安全。实例概述本实例模拟一个买书的过程,在交易过程中如果发生问题,那么事物就会回滚以保证数据安全。环境配置 spring4所需jar [http://pan.baidu.com/s/1pJmgxlh] 完成 基本方法的编码 配置spring4事物管理方法 测试 源码 BooksS

apria 584

Spring 使用注解方式进行事物管理

Spring 使用注解方式进行事物管理大家在使用spring的注解式事务管理时,对事务的传播行为和隔离级别可能有点不知所措,下边就详细的介绍下以备方便查阅。事物注解方式: @Transactional当标于类前时, 标示类中所有方法都进行事物处理例子:@Transactional public class TestServiceBean implements TestService {}当类中某些方

张勤一 1128

Spring之声明式事物管理

注意:大多数Spring框架使用者采用声明式事物管理。

luccs624061082的专栏 843

spring, hibernate 事物处理,异常拦截

今天测试了下spring中配置的hibernate事物处理功能。在异常拦截方面有些收获,认为有必要分享给大家。 这里的异常拦截指的是当对配置了事物处理的方法进行了不合法操作(如:向数据库中插入两条id值相同的记录),spring的事物处理机制会在不合法操作执行后立即自动捕获该异常(以后不能再次通过try{}catch{}捕获该异常,因为该异常以被捕获),后面的程序会正常继续执行。 做到这里突然想到一个问题,也是try{}catch{}的最基本机制,如果一个异常被程序块内层try{}catch{}捕获后,

yangbo2921946188的博客 1350

Spring事物回滚和异常类

1、异常的一些基本知识 异常的架构   异常的继承结构:Throwable为基类,Error和Exception继承Throwable。Error和RuntimeException及其子类成为未检查异常(unchecked),其它异常成为已检查异常(checked)。 Error异常 Error表示程序在运行期间出现了十分严重、不可恢复的错误,在这种情况下应用程序只能终止运行,例如J...

Just do it! 843

spring 异常 事物不回滚

mysql中spring.xml里配置了AOP通知,事物管理等,但是代码异常数据却没有回滚,因为事物是走的mysql默认的事物,没有走自己配置的引入&lt;aop:aspectj-autoproxy /&gt;...

不准备改行的博客 325

Spring 事物处理

Spring事物的基本用法不再赘述,基本上就是异常回滚。就Spring事物处理的特殊点,做一下个人记录。 首先,Spring的查询是不需要事物的。我们基本上都是用用:PROPAGATION_SUPPORTS–支持当前事务,如果当前没有事务,就以非事务方式执行。这个事物如果把查询和其它方法,同时放在一个事物中,查询就添加了事物。本身查询添加事物是没什么关系的,但是,SpringJDBC中,查询结果为

growing_IT_bird的专栏 649

Spring基础篇-事物(声明式事物与编程式事务)!

getTransaction(@Nullable TransactionDefinition definition) 根据传入的definition,获取一个事物对象,在这里面,它定义了一些事物的基本规则,如传播性,隔离级别等。例如,你使用了jdbc,则可以使用DataSourceTransactionManager作为事物的管理器,如果使用的是Hibernate,则可以使用HibernateTransactionManager作为事物的管理器!

H935961611的博客 369

spring事物配置

expression="execution(* com.web.yx.service.*.*(..))"/>

一生有你(Java) 634
上一篇: Spring Cloud下基于OAUTH2认证授权的实现
下一篇: spring boot-自动配置原理和实战
wflovejava
博客等级 码龄11年 23粉丝 46原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值