SpringMVC 手动控制事务提交

JAVA设置手动提交事务,回滚事务,提交事务的操作 主要介绍了JAVA设置手动提交事务,回滚事务,提交事务的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 立即下载
AI摘要

本文深入探讨SpringMVC中事务管理的实现方式,包括配置文件应用、无ApplicationContext情况下的事务注入、以及Spring声明式事务配置。通过示例代码演示如何在业务方法中使用事务,确保数据操作的一致性和安全性。

好记忆不如烂笔头 ,还是记下点东西比较好。


描述


       事务还是一个比较好的东东,有了这个,我们在做流程性的东西的时候,就会很好,很nice。

现在看看 SpringMVC 如何实现的,详细请看代码:

1、配置文件 applicationContext.xml:

<bean id="txManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager"
p:dataSource-ref="dataSource"/>

2、在需要加事务的方法上加上

DataSourceTransactionManager transactionManager = (DataSourceTransactionManager) ctx
.getBean("txManager");
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW); // 事物隔离级别,开启新事务,这样会比较安全些。
TransactionStatus status = transactionManager.getTransaction(def); // 获得事务状态
try {
//逻辑代码,可以写上你的逻辑处理代码
transactionManager.commit(status);
} catch (Exception e) {
transactionManager.rollback(status);
}

这是在有 ApplicationContext 的情况下、

3. ApplicationContext 不存在的情况下

    @Autowired

    private DataSourceTransactionManager txManager;

   DefaultTransactionDefinition def = new DefaultTransactionDefinition();

   def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);// 事物隔离级别,开启新事务

   TransactionStatus status = txManager.getTransaction(def); // 获得事务状态

try{
//逻辑代码,可以写上你的逻辑处理代码
txManager.commit(status);
}catch(Exception e){
txManager.rollback(status);
}


3. Spring声明式事务配置

          

<!-- 事务配置 spring 3.0 -->

<beanid="transactionManager class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

<propertyname="dataSource"ref="dataSource"/>

</bean>

<aop:config>

<aop:pointcutexpression="execution(public * com.*.service.impl.*Impl.*(..))"id="pointcut"/>

<aop:advisoradvice-ref="txAdvice"pointcut-ref="pointcut"/>

</aop:config>

<tx:adviceid="txAdvice"transaction-manager="transactionManager">

<tx:attributes>

<tx:methodname="query*"propagation="REQUIRED"read-only="true"/>

<tx:methodname="find*"propagation="REQUIRED"read-only="true"/>

<tx:methodname="get*"propagation="REQUIRED"read-only="true"/>

<tx:methodname="save*"propagation="REQUIRED"/>

<tx:methodname="add*"propagation="REQUIRED"/>

<tx:methodname="create*"propagation="REQUIRED"/>

<tx:methodname="delete*"propagation="REQUIRED"/>

<tx:methodname="del*"propagation="REQUIRED"/>

<tx:methodname="remove*"propagation="REQUIRED"/>

<tx:methodname="modify*"propagation="REQUIRED"/>

<tx:methodname="update*"propagation="REQUIRED"/>

<tx:methodname="clear*"propagation="REQUIRED"/>

</tx:attributes>

</tx:advice>





如上spring的配置基本都ok了、虽然已经配置了好多次了,但是这次还是写写吧,自己都快忘记了。
贴上去的都是干货。欢迎指正和批评!



【温室气体数据集】全球总碳柱观测网络 TCCON 阅读详情

相关推荐

基于Arduino的智能垃圾桶

通过本次简单的Arduino智能垃圾桶小实验可以快速了解Arduino的基本用法 1、材料准备 Arduino UNO HC-SR04超声波模块 SG90舵机 杜邦线 电源 电脑 2、代码分析 电机的控制 #include<Servo.h> #define duoji D5 Servo myduoji; void setup() { myduoji.attach(duoji); //舵机连接 Serial.begin(115200); } void loop() { myduoji.w

weixin_41679960的博客 1万+

【Java】Spring事务手动提交

应用场景 在使用spring+hibernate时,通常情况下直接在ServiceImpl层或Controller层加@Transactional注解就行,但因更新数据量过大,内存溢出,需分量提交,比如每插入100000条进行提交一次,但注解无法满足应用场景,所以只能采用手动提交形式。 解决方案 通过自动注解获取TransactionTemplate对象。 @Autowired private TransactionTemplate txTemplate; 在sql语句执行之前开启事务。 Def

qq_42454367的博客 7990

手把手教你搭建日本亚马逊CVV钓鱼系统(含自动验证功能)

本文详细介绍了电商平台安全防护的关键实践,重点讲解了如何构建自动化风控系统。内容包括基础架构设计、用户行为分析、交易风险评估模型构建、验证机制实现以及系统部署优化,帮助电商平台有效识别和防范安全威胁,同时提升用户体验。

weixin_30952535的博客 813

spring 项目 手动提交事务

【代码】spring 项目 手动提交事务。

haizhuang_bu的博客 664

使用ExcelJS向XLSX单元格居中插入图片

本文记录了使用ExcelJS库向XLSX单元格里居中写入图片的方法。本文内容包括:xlsx 文件格式;xlsx 图片定位的长度单位;使用nativeColOff和nativeRowOff进行定位,不要使用官网给的定位方式;添加图片到数据表的总体流程和样例代码;注意事项等。

weixin_43678000的博客 3455

视频预处理--经典方法卷积3D

在三维卷积操作中,卷积核不仅在空间维度上滑动,还在时间维度上滑动,从而同时捕捉时间和空间上的特征。通过合理设置步长和填充,可以灵活控制输出特征图的大小和特征提取的效果。你的理解非常准确:三维卷积核就像是一个长度为 3 的滑动窗口,每次选取 3 个连续的帧进行卷积操作,而步长和填充则进一步优化了这一过程。

m0_73359068的博客 1649

springmvc开启事务_SpringMVC 手动控制事务提交 【转】

1、配置文件applicationContext.xml:class="org.springframework.jdbc.datasource.DataSourceTransactionManager"p:dataSource-ref="dataSource"/>2、在需要加事务的方法上加上DataSourceTransactionManager transactionManager = ...

weixin_39550587的博客 926

6、Dialogflow 开发全解析:从基础到高级应用

本文全面解析了 Dialogflow 的核心功能与高级应用,涵盖意图与实体的创建、上下文管理、后续意图设置以及高级实体类型的实际应用场景。详细介绍了自定义实体的导入导出规则、编程添加方法及数量限制,并通过流程图和实例说明了上下文生命周期与对话连贯性设计。结合电商、旅游、问卷调查等实际业务场景,展示了模糊匹配、自动扩展、复合实体等功能的强大灵活性。最后提供了开发最佳实践建议,帮助开发者构建高效、智能的对话系统。

kafka6courier的博客 102

spring手动控制事务开启_Spring的子框架?SpringMVC,如何实现手动控制事务提交?...

小编特意去java群求来大众想看的需求,SpringMVC如何实现手动控制事务提交?那我们一起来看看吧~事务可以给程序做一个很好控制,有了这个,我们在做流程性的东西的时候,就减少了一些不必要的麻烦。好记性不如烂笔头 ,还是记下点东西比较好。现在看看 SpringMVC 如何实现的,详细请看代码:1、配置文件 applicationContext.xml: class="org.springfra...

weixin_42389522的博客 328

第81篇:Vibe Coding时代:LangGraph + Eval评估体系实战,解决 Agent 优化全靠感觉的问题

本文介绍了一个为LangGraph Coding Agent设计的评估体系解决方案。文章首先指出了当前AI Coding Agent开发中的常见问题:优化过程缺乏客观评估标准,导致改进效果难以量化。随后提出了一个完整的评估框架,包括评估指标(任务成功率、质量指标、安全指标、成本指标和流程指标)、项目结构设计和评估案例集。 核心内容包括: 设计了JSON格式的评估案例集,覆盖正常任务、边界任务和高风险场景 实现了模拟Agent输出的演示代码 构建了多维度评分系统,包括关键词匹配、禁用词检测和成本评估 提供了评

sundong_81的博客 47

Sigrity SPEED2000 TDR TDT Simulation模式如何进行时域阻抗仿真分析操作指导-差分信号

Sigrity SPEED2000 TDR TDT Simulation模式如何进行时域阻抗仿真分析操作指导-单端信号详细介绍了单端信号如何进行TDR仿真分析,下面介绍如何对差分信号进行TDR分析,还是以下图为例进行分析。Impedance是时域阻抗曲线,也是最主要的观测指标,注意:impedance曲线的时间刻度不是延时,延时=时间刻度/2,因为TDR测量的是用一来一回的原理去测量的。Use Lossy peeling 默认不勾选,勾选的话代表同时仿真无损和有损方案,不勾选代表仅仿真有损方案。

weixin_54787054的博客 855

java手动提交事务_Spring的子框架?SpringMVC,如何实现手动控制事务提交?

小编特意去java群求来大众想看的需求,SpringMVC如何实现手动控制事务提交?那我们一起来看看吧~事务可以给程序做一个很好控制,有了这个,我们在做流程性的东西的时候,就减少了一些不必要的麻烦。好记性不如烂笔头 ,还是记下点东西比较好。现在看看 SpringMVC 如何实现的,详细请看代码:1、配置文件 applicationContext.xml: class="org.springfra...

weixin_39945679的博客 515

DCNv4+YOLOv8:2024最新可变形卷积赋能目标检测,从原理到实战的科研级优化指南

从理解DCNv4“自适应变形卷积核”的核心思想,到亲手将其嵌入YOLOv8并验证在复杂场景的检测效果,再到基于此探索属于自己的科研与工程方向——这个过程能让你深刻理解目标检测中“特征自适应提取”的核心价值。现在就开始行动,相信你会在目标检测的“自适应特征提取”之路上,走出一条属于自己的技术路径。实验通常会证明:嵌入DCNv4后,YOLOv8在复杂场景下的检测精度提升3-5个百分点,尤其是小目标和遮挡目标的AP提升更为明显,而推理速度仅下降5%-10%(可通过模型量化进一步优化)。2024年最新推出的。

m0_64661770的博客 267

springmvc开启事务_SpringMVC 手动控制事务提交

1、在需要加事务的方法上加上DataSourceTransactionManagertransactionManager=(DataSourceTransactionManager)ctx.getBean("txManager");DefaultTransactionDefinitiondef=newDefaultTransactionDefinition();def.setPro...

weixin_39572794的博客 719

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SpringMVC 手动控制事务提交 【转】

1、配置文件applicationContext.xml: <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager" p:dataSource-ref="dataSource"/> 2、在需要加事务的方法上加上 ...

weixin_30322405的博客 259

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

SpringMVC 手动控制事务提交 --各种坑

在springmvc的开发中,有个比较扯的东西,就是当你在代码中新开了一个线程,那么这个线程里面将不会有事物的存在. 解决.. 这样就可以提供事物支持了.. 在需要加事务的方法上加上 DataSourceTransactionManager transactionManager = (DataSourceTransactionManager) ctx

欧神的博客 1万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Java-SpringMVC事务提交

Java-SpringMVC事务提交

bk_huangzongbo的博客 1666

Spring手动提交事务+oracle锁

最近有两个项目同时访问数据库查询同一条数据导致产生编号重复状况,经过搜索最后用手动提交事务和数据库锁解决的,以下为解决方法,本人也是第一次操作,如果各位有更好的解决方法请留言告知,感谢! 项目框架均为Spring+SpringMVC+Mybatis 1、在Spring配置文件中配置 2、在需要做事务控制的代码中加上一下代码 3、查询的SQL语句由select 更改为  sele...

qqjudith的专栏 1371

【手动事务】SpringMVC手动提交事务(声明式事务)同时对多个表插入数据,异常全部回滚

之前关于Spring事务只是简单的了解,直接在项目的applicationContext里面直接配置了事务管理之后,就不用关心事务的提交了,spring会帮我们自动提交事务,在异常时直接抛出运行时异常了。 但是有时候在项目中需要一系列连续的操作,比如对多个表同时执行插入新数据的操作,在其中一个出现异常时,就全部回滚,这时原配置文件里的的自动提交事务就不能符合需求了。 但是手动提交事务又不懂,又开始...

种一棵树最好的时间是十年前,其次是现在。 7585

spring 新的事务手动commit 提交后,再次查询查询不到新事务提交的值??

近来遇到一个比较怪异的问题,使用的框架是 spring3和 hibernate3 , 都不知道是 spring问题还是 hibernate3或者其他问题了。 在一个 service 里面 一个方法里面。开启了一个 新事务,用来手动控制提交事务对于这个 一部分的数据 // 将充值状态先保存,...

chuncui2576的博客 2351

springmvc mybatis 手动提交事务

public void save(User user) { //获取Spring容器的对象 WebApplicationContext contextLoader = ContextLoader.getCurrentWebApplicationContext(); //1.获取事务控制管理器 DataSourceTransactionManager transactionManager =

u010486495的专栏 1万+
上一篇: Java redis 之 Jedis
下一篇: MySql 1030 Error
supingemail
博客等级 码龄18年 1235粉丝 320原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值