Spring 聲明式事務管理

Spring 編程的方式實現事務管理,這樣太過麻煩,需要在每個方法上面加上相應的事務處理操作,聲明式事務處理能夠很好的解決這個問題,比如通過tx命名空間,這樣只需要配置就可以檢測到相關的方法,或者是通過@transcational注解來實現,這樣會減少很多的代碼量,但是實現的時候有這樣的幾個點需要注意

首先我們來看tx命名空間來實現:

	 <tx:advice id="transcation" transaction-manager="transcationManager"><tx:attributes><tx:method name="*"  propagation="REQUIRED" isolation="DEFAULT"></tx:method></tx:attributes></tx:advice><aop:config><aop:pointcut expression="execution(* com.aa.dao.api.IStudentDao.tranfMoeny(..))" id="transcationCut" /><aop:advisor advice-ref="transcation" pointcut-ref="transcationCut"/></aop:config> 

配置如上圖:

需要配置aop:config ,因為Spring 事務管理是基于aop來進行實現的,在aop:config 中我們配置了切點 pointcut 和一個advisor 什么是advisor 呢,我們來看一下:

然后使用tx 來配置事務通知,

<tx:advice id="txAdvice" transaction-manager="transactionManager"><tx:attributes><!-- 所有以 'get' 開頭的方法使用只讀事務 --><tx:method name="get*" read-only="true"/><!-- 其他方法使用默認的事務屬性 --><tx:method name="*"/></tx:attributes>
</tx:advice>
  • id?屬性為事務通知指定一個唯一的標識符。
  • transaction-manager?屬性指定使用的事務管理器。
  • <tx:attributes>?標簽內可以定義不同方法名匹配規則下的事務屬性。
    • name?屬性用于指定方法名的匹配規則,支持通配符?*
    • read-only?屬性用于指定事務是否為只讀事務。

然后我們去執行方法的時候,如果出現了異常就會執行相應的回滾的操作,對于目標方法,我們可以這樣設置:

@Overridepublic void tranfMoeny(String money, String fromname, String targetName) {String sql_sub = "update t_account set money=money-" + money + " where username=\'" + fromname + "\'";jdbcTemplate.execute(sql_sub);Integer.parseInt("jjf");//模擬出現異常String sql_add = "update t_account set money=money+" + money + " where username=\'" + targetName + "\'";jdbcTemplate.execute(sql_add);}

或者:

	@Overridepublic void tranfMoeny(String money, String fromname, String targetName) {try {String sql_sub = "update t_account set money=money-" + money + " where username=\'" + fromname + "\'";jdbcTemplate.execute(sql_sub);Integer.parseInt("jjf");String sql_add = "update t_account set money=money+" + money + " where username=\'" + targetName + "\'";jdbcTemplate.execute(sql_add);} catch (Exception e) {e.printStackTrace();throw new RuntimeException("數據插入異常");}}

非常重要的一點是,目標方法需要有異常拋出,我們可以手動拋出,或者默認拋出異常的方式,這樣我們的事務管理器就可以檢測到,并且執行回滾操作。

希望對你有所幫助!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/72657.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/72657.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/72657.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

電機控制常見面試問題(十五)

文章目錄 一、電機氣隙二、電氣時間三.電機三環控制詳解四.驅動板跳線意義五.電機開環自檢 一、電機氣隙 電機氣隙是定子和轉子之間的空隙&#xff0c;防止釘子轉子運轉時物理接觸&#xff0c;此外&#xff0c;氣隙是磁路的重要環節&#xff0c;磁場需通過氣隙傳遞能量&#x…

代碼隨想錄算法訓練營第六十五天| 圖論10

Bellman_ford 隊列優化算法&#xff08;又名SPFA&#xff09; 代碼隨想錄 import collectionsdef main():n, m map(int, input().strip().split())edges [[] for _ in range(n 1)]for _ in range(m):src, dest, weight map(int, input().strip().split())edges[src].append…

Chat2DB:讓數據庫管理像聊天一樣簡單

數據庫工具的痛點與破局 在數據爆炸的時代&#xff0c;數據庫管理工具已成為企業高效運營的剛需。然而&#xff0c;傳統工具如Navicat、DBeaver雖功能強大&#xff0c;卻讓非技術人員和SQL新手望而卻步。復雜的界面、繁瑣的手動操作、晦澀的語法規則&#xff0c;成為橫亙在數據…

Navicat for Snowflake 震撼首發,激活數據倉庫管理全新動能

近日&#xff0c;Navicat 家族迎來了一位全新成員 — Navicat for Snowflake。Snowflake 是一款基于云架構的現代數據倉庫解決方案&#xff0c;以其彈性擴展、高性能和易用性著稱。這次首發的Navicat for Snowflake 專為簡化 Snowflake 數據庫管理任務而精心打造。它憑借其直觀…

【項目合集】智能語音小車-微信小程序控制

功能需求&#xff1a; 車子檢測環境溫度、濕度&#xff0c;上報 APP、WEB 端顯示實時數據可通過 APP 控制小車前進、左轉、右轉可通過語音控制小車前進后退車上一個 LED 燈&#xff0c;可通過 WEB、小程序控制在 APP、WEB 上均可注冊登錄 硬件清單 硬件 功能 備注 ESP32 …

人工智能與人的智能,改變一生的思維模型分享【4】決策樹

決策樹&#xff08; DECISION TREE&#xff09; 一般由一個決策圖和若干可能的結果組成。是一種通過羅列解題的關鍵步驟以及各步驟發生的條件和結果&#xff0c;由此來創建到達目標的規劃。 我們很早就知道有一個方法&#xff0c;叫做當你苦悶、糾結的時候&#xff0c;把你的所…

利用余弦相似度在大量文章中找出抄襲的文章

我前面的2篇文章分別講了如果利用余弦相似度來判斷2篇文章的相似度&#xff0c;來確定文章是否存在抄襲&#xff0c;和余弦相似度的原理&#xff0c;即余弦相似度到底是怎么來判斷文章的相似性高低的等等。這一篇再說下&#xff0c;對于文章字數多和大量文章時&#xff0c;如果…

設計模式-對象創建

對象創建 前言1. Factory Method1.1 模式介紹1.2 模式代碼1.2.1 問題代碼1.2.2 重構代碼 1.3 模式類圖1.4 要點總結 2. Abstract Factory2.1 模式介紹2.2 模式代碼2.2.1 問題代碼2.2.2 重構代碼 2.3 模式類圖2.4 要點總結 3. Prototype3.1 模式介紹3.2 模式代碼3.3 模式類圖3.4…

SQLAlchemy系列教程:批量插入數據

高效地批量插入數據對于應用程序的性能至關重要。SQLAlchemy為批處理操作提供了幾種機制&#xff0c;可以最大限度地減少開銷并加快數據庫事務時間。在本指南中&#xff0c;我們將探討如何使用SQLAlchemy執行批量插入&#xff0c;包括從基礎技術到高級技術。 搭建環境 在開始之…

V2X驗證

1. 標準和規范驗證 歐洲對 DSRC 和 V2X 系統有一系列的標準和規范,主要由 ETSI (European Telecommunications Standards Institute) 和 IEEE 等組織制定。驗證通常包括以下標準和規范: ETSI EN 302 571:這是DSRC在歐洲的主要標準,規定了DSRC系統的技術要求和操作條件。ET…

openEuler系統遷移 Docker 數據目錄到 /home,解決Docker 臨時文件占用大問題

根據錯誤信息 write /var/lib/docker/tmp/...: no space left on device&#xff0c;問題的根源是 根分區&#xff08;/&#xff09;的磁盤空間不足&#xff0c;而非 /home 分區的問題。以下是詳細解釋和解決方案&#xff1a; 問題原因分析 Docker 臨時文件占用根分區空間&…

Matlab 四分之一車輛被動懸架和模糊pid控制對比

1、內容簡介 Matlab 183-四分之一車輛被動懸架和模糊pid控制對比 可以交流、咨詢、答疑 2、內容說明 略 3.1 車輛多自由度模型建立 對于車輛動力學&#xff0c;一般都是研究其懸架系統&#xff0c;懸架系統由輪胎&#xff0c;輪胎空氣&#xff0c;彈簧&#xff0c;減震器和…

LabVIEW旋轉設備狀態在線監測系統

為了提高大型旋轉設備如電機和水泵的監控效率和故障診斷能力&#xff0c;用LabVIEW軟件開發了一套實時監測與故障診斷系統。該系統集成了趨勢分析、振動數據處理等多項功能&#xff0c;可實時分析電機電流、壓力、溫度及振動數據&#xff0c;以早期識別和預報故障。 ? 項目背…

微前端 無界wujie

開發環境配置: Node.js 版本 < 18.0.0 pnpm 腳手架示例模版基于 pnpm turborepo 管理項目 如果您的當前環境中需要切換 node.js 版本, 可以使用 nvm or fnm 進行安裝. 以下是通過 nvm 或者nvs 安裝 Node.js 16 LTS 版本 nvs安裝教程 https://blog.csdn.net/glorydx/artic…

跟網型逆變器小干擾穩定性分析與控制策略優化simulink仿真模型和代碼(包含完整仿真報告)

關注&#xff1a;“電擊小子程高興的MATLAB小屋”獲取巨額優惠 1.模型簡介 本仿真模型基于MATLAB/Simulink&#xff08;版本MATLAB 2016Rb&#xff09;軟件。建議采用matlab2016 Rb及以上版本打開。&#xff08;若需要其他版本可聯系代為轉換&#xff09; 近年來&#xff0c…

基于SpringBoot的“城市公交查詢系統”的設計與實現(源碼+數據庫+文檔+PPT)

基于SpringBoot的“城市公交查詢系統”的設計與實現&#xff08;源碼數據庫文檔PPT) 開發語言&#xff1a;Java 數據庫&#xff1a;MySQL 技術&#xff1a;SpringBoot 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系統展示 系統總體結構圖 系統首頁界面 用戶登錄界面 公…

框架源碼私享筆記(02)Mybatis核心框架原理 | 一條SQL透析核心組件功能特性

最近在思考一個問題&#xff1a;如何能夠更好的分享主流框架源碼學習筆記&#xff08;主要是源碼部分&#xff09;?讓有緣刷到的同學既可以有所收獲&#xff0c;還能保持對相關技術架構探討學習熱情和興趣。以及自己也保持較高的分享熱情和動力。 今天嘗試用一個SQL查詢作為引…

UNI-APP uts插件 支持ANDROID 監聽手機狀態

插件地址 https://ext.dcloud.net.cn/plugin?id22646 模塊 import {startPhoneListener,stopPhoneListener,checkIsAutoRecord,toCallAutoRecorderPage,navigateToCallRecordingSettings,jumpToPermissionPage,makePhoneCall,allRecorderFilesAction,registerSmsReceiver,} f…

windows協議不再續簽,華為再無windows可用,將于四月發布鴻蒙PC

大家好&#xff0c;我是國貨系創始人張云澤&#xff0c;最近不少小伙伴在后臺問&#xff1a;“聽說Windows協議要到期了&#xff1f;我的電腦會不會變磚&#xff1f;”還有人說&#xff1a;“華為筆記本以后用不了Windows了&#xff1f;鴻蒙系統能用嗎&#xff1f;”今天咱們就…

Stable Diffusion API /sdapi/v1/txt2img的完整參數列表及其說明

基本參數 {"prompt": "高質量&#xff0c;精細的恐龍", // 主提示詞"negative_prompt": "模糊&#xff0c;低質量", // 負面提示詞"styles": ["photorealistic", "detailed"], // 應用的風格預設&q…