3.學習筆記--Spring-AOP總結(p39)-Spring事務簡介(P40)-Spring事務角色(P41)-Spring事務屬性(P42)

1.AOP總結:面向切面編程,在不驚動原始基礎上為方法進行功能增強。
2.AOP核心概念:
(1)代理:SpringAOP的核心是采用代理模式
(2)連接點:在SpringAOP中,理解為任意方法的執行
(3)切入點:匹配連接點的式子,也是具有共性功能的方法描述
(4)通知:若干個方法的共性功能,在切入點處執行,最終體現為一個方法。
(5)切面:描述通知和切入點的對應關系
(6)目標對象:被代理的原始對象成為目標對象
3.切入點表達式格式
(1)動作關鍵詞(訪問修飾符 返回值 包名.類名/接口名 (參數)異常名)
(2)切入點表達式描述通配符(快速描述、范圍描述)
*:匹配任意符號(常用)
… :匹配多個連續的任意符號(常用)
+:匹配子類類型
4.通知類型
(1)前置通知
(2)后置通知
(3)環繞通知(important)
1)環繞通知依賴形參ProceedingJoinPoint才能實現對原始方法的調用
2)環繞通知開源隔離原始方法的調用執行
3)環繞通知返回值設為Object類型
4)環繞通知開源對原始方法調用過程中出現的異常進行處理。
(4)返回后通知
(5)拋出異常后通知
補充:
(1)獲取切入點方法的參數:
JointPoint:適合前置、后置、返回后、拋出異常后通知,設置為方法的第一個形參。
ProceedJointPoint:適用于環繞通知
(2)獲取切入點方法返回值
返回后通知
環繞通知
(3)獲取切入點方法運行異常信息
拋出異常后通知
環繞通知
5.Spring事務簡介
(1)事務作用:在數據層保障一系列數據庫操作(同成功同失敗)
(2)Spring事務作用:在數據層或業務層保障一些列的數據庫操作(同成功同失敗)
接口是public interface platformTransactionManager(平臺事務管理器)
方法有commit、rollback
接口實現類是public class DataSourceTransactionManager
例子:模擬銀行賬戶間轉賬業務
需求:實現任意兩個賬戶間轉賬操作
(A賬號減錢,B賬戶加錢)
1)數據層提供基礎操作,指定賬戶減錢(outMoney),指定賬戶加錢(inMoney)
2)業務層提供轉賬操作(transfer),調用加錢和減錢操作。
3)提供2個賬號和操作金額執行轉賬操作
4)基于Spring整合MyBatis環境搭建上述操作
結果分析:
原本數據庫中A,B的賬戶金額都是1000.
1)程序正常執行,賬戶金額A-B+
2)程序出現異常后,轉賬失敗。異常之前操作成功,異常之后操作失敗,整體業務失敗。
(3)在業務層的接口,添加注解@Transaction
在這里插入圖片描述
(4)在jdbc的配置中,通過Bean引入平臺事務管理器的操作(DataSource dataSource)
在這里插入圖片描述
(5)接口實現類先注釋掉異常
(6)運行test,成功在這里插入圖片描述
(7)驗證使用Trasaction事務之后數據庫,會不會出現同成功同失敗的效果。
在這里插入圖片描述

在這里插入圖片描述
總結:
在這里插入圖片描述

在這里插入圖片描述
在這里插入圖片描述
6.Spring事務角色
事務管理員、事務協調員
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
MybaticsConfig的SqlSessionFactory的DataSource和JdbcConfig的DataSource不是同一個,則不能運行成功。本次代碼能運行成功,是因為他們是通過同一個數據源DataSource進行管理.
在這里插入圖片描述
在這里插入圖片描述
7.Spring事務屬性
事務相關配置,案例:轉賬業務追加日志,事務傳播行為
在這里插入圖片描述
在這里插入圖片描述

內存異常,運行異常才能回滾。IOException不回滾,出現這種情況,我們要在接口的事務中添加rollbackfor
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

(1)案例:轉賬業務追加日志
需求:實現任意兩個賬戶間轉賬操作,每次轉賬操作在數據庫留痕。
(A減錢,B加錢,數據庫記錄日志)
1)基于轉賬操作案例添加日志模塊實現數據庫中記錄日志
2)業務層轉賬操作(Transfer),調用減錢、加錢與記錄日志功能,實現預期效果。
無論轉賬操作是否成功,都進行轉賬操作的日志留痕。
<1>REQUIRED(默認),事務管理員開啟事務,事務協調員加入事務;事務管理員如果沒有事務 ,事務協調員新建事務。(但是這個造成了如果在轉賬中出現了i/0異常,不管轉賬是否成功,日志的信息并不會在數據庫出現,雖然金額沒錯保持原樣,但是日志信息沒有保存)
<2>REQUIRED_NEW,事務管理與開啟事務,事務協調員可以新建事務;如果事務協調員沒有事務,則事務協調員也會開啟任務。所以要在業務層接口添加Spring事務,設置事務傳播行為REQUIRES_NEW(需要新事務)
在這里插入圖片描述

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

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

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

相關文章

數據庫-day06

一、實驗名稱和性質 分類查詢 驗證 綜合 設計 二、實驗目的 1&#xff0e;掌握數據查詢的Group by &#xff1b; 2&#xff0e; 掌握聚集函數的使用方法。 三、實驗的軟硬件環境要求 硬件環境要求&#xff1a; PC機(單機) 使用的軟件名稱、版本號以及模塊&#xff1a; …

看門狗定時器(WDT)超時

一、問題 Arduino 程序使用<Ticker.h>包時&#xff0c;使用不當情況下&#xff0c;會導致“看門狗WDT超時” 1.1問題控制臺報錯 在串口監視器顯示 --------------- CUT HERE FOR EXCEPTION DECODER ---------------Soft WDT resetException (4): epc10x402077cb epc2…

AI在多Agent協同領域的核心概念、技術方法、應用場景及挑戰 的詳細解析

以下是 AI在多Agent協同領域的核心概念、技術方法、應用場景及挑戰 的詳細解析&#xff1a; 1. 多Agent協同的定義與核心目標 多Agent系統&#xff08;MAS, Multi-Agent System&#xff09;&#xff1a; 由多個獨立或協作的智能體&#xff08;Agent&#xff09;組成&#xff…

Wireshark TS | 異常 ACK 數據包處理

問題背景 來自于學習群里群友討論的一個數據包跟蹤文件&#xff0c;在其中涉及到兩處數據包異常現象&#xff0c;而產生這些現象的實際原因是數據包亂序。由于這兩處數據包異常&#xff0c;都有點特別&#xff0c;本篇也就其中一個異常現象單獨展開說明。 問題信息 數據包跟…

【React】項目的搭建

create-react-app 搭建vite 搭建相關下載 在Vue中搭建項目的步驟&#xff1a;1.首先安裝腳手架的環境&#xff0c;2.通過腳手架的指令創建項目 在React中有兩種方式去搭建項目&#xff1a;1.和Vue一樣&#xff0c;先安裝腳手架然后通過腳手架指令搭建&#xff1b;2.npx create-…

深入淺出 NVIDIA CUDA 架構與并行計算技術

&#x1f407;明明跟你說過&#xff1a;個人主頁 &#x1f3c5;個人專欄&#xff1a;《深度探秘&#xff1a;AI界的007》 &#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目錄 一、引言 1、CUDA為何重要&#xff1a;并行計算的時代 2、NVIDIA在…

pytorch學習02

自動微分 自動微分模塊torch.autograd負責自動計算張量操作的梯度&#xff0c;具有自動求導功能。自動微分模塊是構成神經網絡訓練的必要模塊&#xff0c;可以實現網絡權重參數的更新&#xff0c;使得反向傳播算法的實現變得簡單而高效。 1. 基礎概念 張量 Torch中一切皆為張…

Java虛擬機(JVM)平臺無關?相關?

計算機的概念模型 計算機實際上就是實現了一個圖靈機模型。即&#xff0c;輸入參數&#xff0c;根據程序計算&#xff0c;輸出結果。圖靈機模型如圖。 Tape是輸入數據&#xff0c;Program是針對這些數據進行計算的程序&#xff0c;中間橫著的方塊表示的是機器的狀態。 目前使…

satoken的奇奇怪怪的錯誤

發了 /user/getBrowseDetail和/user/getResponDetail&#xff0c;但為什么進入handle里面有三次&#xff1f;且第一次的handle類型是AbstractHandleMapping$PreFlightHttpRequestHandlerxxx,這一次進來的時候flag為false&#xff0c;StpUtils.checkLogin拋出了異常 第二次進來的…

【KWDB 創作者計劃】_上位機知識篇---SDK

文章目錄 前言一、SDK的核心組成API(應用程序接口)庫文件(Libraries)開發工具文檔與示例依賴項與環境配置二、SDK的作用簡化開發流程確保兼容性與穩定性加速產品迭代功能擴展與定制三、SDK的典型應用場景硬件設備開發操作系統與平臺云服務與API集成游戲與圖形開發四、SDK與…

golang處理時間的包time一次性全面了解

本文旨在對官方time包有個全面學習了解。不鉆摳細節&#xff0c;但又有全面了解&#xff0c;重點介紹常用的內容&#xff0c;一些低頻的可能這輩子可能都用不上。主打一個花最少時間辦最大事。 Duration對象: 兩個time實例經過的時間,以長度為int64的納秒來計數。 常見的durati…

PyCharm Flask 使用 Tailwind CSS 配置

使用 Tailwind CSS 步驟 1&#xff1a;初始化項目 在 PyCharm 終端運行&#xff1a;npm init -y安裝 Tailwind CSS&#xff1a;npm install -D tailwindcss postcss autoprefixer初始化 Tailwind 配置文件&#xff1a;npx tailwindcss init這會生成 tailwind.config.js。 步…

【英語語法】基本句型

目錄 前言一&#xff1a;主謂二&#xff1a;主謂賓三&#xff1a;主系表四&#xff1a;主謂雙賓五&#xff1a;主謂賓補 前言 英語基本句型是語法體系的基石&#xff0c;以下是英語五大基本句型。 一&#xff1a;主謂 結構&#xff1a;主語 不及物動詞 例句&#xff1a; T…

隔離DCDC輔助電源解決方案與產品應用科普

**“隔離”與“非隔離的區別** 隔離&#xff1a; 1、AC-DC&#xff0c;也叫“一次電源”&#xff0c;人可能會碰到的應用場合&#xff0c;起安全保護作用&#xff1b; 2、為了抗干擾&#xff0c;通過隔離能有效隔絕干擾信號傳輸。 非隔離&#xff1a; 1、“安全特低電壓&#…

DS-SLAM 運動一致性檢測的源碼解讀

運動一致性檢測是Frame.cc的Frame::ProcessMovingObject(const cv::Mat &imgray)函數。 對應DS-SLAM流程圖Moving consistency check的部分 把這個函數單獨摘出來&#xff0c;寫了一下對兩幀檢測&#xff0c;查看效果的程序&#xff1a; #include <opencv2/opencv.hpp…

安全測試的全面知識體系及實現路徑

以下是安全測試的全面知識體系及實現路徑,結合最新工具和技術趨勢(截至2025年): 一、安全測試核心類型與工具 1. 靜態應用安全測試(SAST) 知識點: 通過分析源代碼、字節碼或二進制文件識別漏洞(如SQL注入、緩沖區溢出)支持早期漏洞發現,減少修復成本,適合白盒測試場…

GPT-4o Image Generation Capabilities: An Empirical Study

GPT-4o 圖像生成能力:一項實證研究 目錄 介紹研究背景方法論文本到圖像生成圖像到圖像轉換圖像到 3D 能力主要優勢局限性與挑戰對比性能影響與未來方向結論介紹 近年來,圖像生成領域發生了巨大的變化,從生成對抗網絡 (GAN) 發展到擴散模型,再到可以處理多種模態的統一生成架…

Redis之全局唯一ID

全局ID生成器 文章目錄 全局ID生成器一、全局ID生成器的定義定義核心作用 二、全局ID生成器需滿足的特征1. 唯一性&#xff08;Uniqueness&#xff09;?2. 高性能&#xff08;High Performance&#xff09;?3. 可擴展性&#xff08;Scalability&#xff09;?4. 有序性&#…

nginx中的代理緩存

1.緩存存放路徑 對key取哈希值之后&#xff0c;設置cache內容&#xff0c;然后得到的哈希值的倒數第一位作為第一個子目錄&#xff0c;倒數第三位和倒數第二位組成的字符串作為第二個子目錄&#xff0c;如圖。 proxy_cache_path /xxxx/ levels1:2 2.文件名哈希值

靜態時序分析STA——8.1 時序檢查(建立時間檢查)

文章目錄 一、時序路徑組二、建立時間檢查1. 觸發器到觸發器路徑1&#xff09;時鐘單元UCKBUF0的延遲計算2&#xff09;時鐘源延遲&#xff08;clock source latency&#xff09; 2. 輸入到觸發器路徑1) 虛擬時鐘的輸入路徑2) 具有實際時鐘的輸入路徑 3. 觸發器到輸出路徑4. 輸…