【SSM面向CRUD編程專欄 7】springAop 事務控制

🛫更多ssm知識見SSM_面向CRUD編程專欄

🚕本博客總結自黑馬程序員的ssm框架視頻

🚒博主對于該知識尚在學習階段

🚄如果發現存在問題請毫不吝嗇的指出

🚀🚀扎哇太棗糕的博客主頁🚀🚀

目錄

1 Spring AOP

2 使用AOP開發

3 spring的事務控制


1 Spring AOP

????????AOP(Aspect Oriented Programming)意思是面向切面編程,是通過預編譯的方式和運行期間動態代理實現程序功能的統一維護的一種技術。AOP是OOP(面向對象編程)的延續,是函數式編程的一種衍生范型,利用AOP可以對業務邏輯的各個部分進行隔離,從而使得業務邏輯個部分之間的耦合性降低,提高程序的可重用性,同時提高了開發的效率。

????????AOP可以在程序運行期間,在不修改源碼的情況下對方法進行功能的增強。它的優勢就是可以減少重復代碼,提高開發效率,并且便于維護。

底層實現

????????AOP的底層通過Spring提供的動態代理技術實現,在運行期間,Spring通過動態代理技術動態的生成代理對象,代理對象方法執行時進行增強功能的介入,再去調用目標對象的方法,從而完成功能的增強。

相關名詞概念

  • Target(目標對象):也就是被代理類對象
  • Proxy(代理):一個類被AOP增強后return的對象就是代理類對象
  • JoinPoint(連接點):每個被攔截到的方法就是一個連接點,這里點指的是方法,因為spring只支持方法類型的連接點
  • Pointcut(切入點):需要被增強的每個方法就是一個切入點
  • Advice(增強):用于定義功能增強方法
  • Aspect(切面):切入點加增強就是切面
  • Weaving(織入):將切入點的方法進行增強的過程就被稱為織入,spring采用動態代理織入,而AspectJ采用編譯器織入和類裝載期織入。

常用的兩種動態代理技術

  • JDK代理:基于接口的動態代理技術,有接口時使用
  • cglib代理:基于父類的動態代理技術,無接口時使用

JDK代理

第一步:創建一個公共接口

?第二步:創建一個被代理類實現公共接口

?第三步:創建一個功能增強類

?第四步:測試類,利用反射創建代理類調用增強方法

測試結果:

cglib代理

第一步:導入相應的依賴jar包

? ? ? ? 由下圖可知,cglib的包已經被封裝到spring-core中它又被封裝在spring-context中,故只需要導入spring-context的依賴就可以使用cglib

?第二步:創建一個被代理類

第三步:創建一個功能增強類

第四步:測試類,利用反射創建代理類調用增強方法

?測試結果:

2 使用AOP開發

? ? ? ? AOP開發需要編寫目標類的目標方法、編寫切面類內置功能增強方法、配置配置文件將切入點與增強方法相結合。spring框架會監控切入點方法的執行,一旦監控到切入點方法執行就會動態的使用代理機制創建代理類對象,并在相應位置將增強與切入點進行織入。spring框架會根據目標類是否實現了接口來決定使用JDK和cglib中的哪一種動態代理模式

基于xml的AOP開發

第一步:導入相關依賴

?第二步:創建一個公共接口和目標類

?第三步:創建一個切面類內置增強方法

第四步:配置配置文件(創建對象的bean標簽、配置織入關系)

測試類及結果:

? ? ?

?? 通知類型

? ?

?? ?切點表達式的寫法:

🔴訪問修飾符可以省略不寫🔴返回值類型、方法全限名里的具體項可以使用*代表任意🔴包名與類名之間一個點.代表當前包下的類,兩個點..代表當前包及其子包下的類🔴參數可以使用兩個點..代表任意(任意個數、任意類型)

舉例如下:對照上述要求理解記憶

?? 切點表達式的抽取??

??

?? 環繞式增強方法

? ??

? ??

基于注解的AOP開發

第一步:導入相關依賴

第二步:創建一個公共接口和目標類

第三步:創建一個切面類內置增強方法

第四步:配置配置文件(開啟組件掃描、AOP自動代理)

?測試類:

3 spring的事務控制

編程式事務控制三個對象

🔴平臺事務管理器對象

????????PlatformTransactionManager接口是spring的事務管理器,他里面提供了我們常用的操作事務的方法。

🔴事務定義對象

? ? ? ? TransactionDefinition內部封裝控制事務的一些參數事務隔離級別

? ? ? ? 事務隔離性控制不好的情況下,會產生以下三個問題:臟讀、不可重復度、幻讀

一共有以下五種事務隔離級別

  • ISOLATION_DEFAULT:默認
  • ISOLATION_READ_UNCOMMITTED:讀未提交
  • ISOLATION_READ_COMMITTED:讀已提交(解決臟讀)
  • ISOLATION_REPEATABLE_READ:可重復讀(解決不可重復讀)
  • ISOLATION_SERIALIZABLE:串行化(解決三種問題,但是效率極低相當于鎖表)

?事務傳播行為

? ? ? ? ?一個事務方法調用另一個事務是會具有事務傳播行為

🔴事務狀態對象?

? ? ? ? TransactionStatus接口提供的是事務具體的運行狀態

聲明式事務控制

? ? ? ? spring的聲明事務控制就是采用生命的方式處理事務,這里說的聲明就是指在配置文件中聲明,用在spring配置文件中聲明處理事物的方式代替代碼式的處理事務。聲明式事務控制可以將業務邏輯和事務管理相分離開,這樣在不需要事務管理的時候,只要在設定文件上修改即可移除事務管理服務,無需改變代碼方便維護。Spring聲明式事務控制的底層就是AOP

基于xml的聲明式事務控制

dao層:定義轉入轉出方法

?service層:實現轉入轉出的業務邏輯

?controller層:調用service層的方法進行事務操作

????????如果xml文件中不進行aop織入進行事務增強的話,除數為零異常的拋出就會導致tom轉出500而lucy并沒有轉入500,接下來進行事務控制配置

這樣的話就會在拋異常的同時兩人的賬戶余額都不會改變?

基于注解的聲明式事務控制

使用@Repository注解和@Service注解代替AccountDaoImpl和AccountServiceImpl的bean標簽,使用@Transactional注解代替aop織入和事務增強設置

?

???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

上一篇:【SSM面向CRUD編程專欄 6】springMVC攔截器、異常處理 jdbcTemplate

下一篇:【SSM面向CRUD編程專欄 8】一篇博客快速上手使用MyBatis進行CRUD
?

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

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

相關文章

【SSM面向CRUD編程專欄 8】一篇博客快速上手使用MyBatis進行CRUD

🛫更多ssm知識見SSM_面向CRUD編程專欄 🚕本博客總結自黑馬程序員的ssm框架視頻 🚒博主對于該知識尚在學習階段 🚄如果發現存在問題請毫不吝嗇的指出 🚀🚀扎哇太棗糕的博客主頁🚀🚀 目…

【SSM面向CRUD編程專欄 9】SSM框架整合

🛫更多ssm知識見SSM_面向CRUD編程專欄 🚕本博客總結自黑馬程序員的ssm框架視頻 🚒博主對于該知識尚在學習階段 🚄如果發現存在問題請毫不吝嗇的指出 🚀🚀扎哇太棗糕的博客主頁🚀🚀 目…

三萬字速通SSM框架入門知識點,快速上手CRUD

🛫更多ssm知識見SSM_面向CRUD編程專欄 🚕本博客總結自黑馬程序員的ssm框架視頻 🚒博主對于該知識尚在學習階段 🚄如果發現存在問題請毫不吝嗇的指出 🚀🚀扎哇太棗糕的博客主頁🚀🚀 目…

無法在web.xml或使用此應用程序部署的jar文件中解析絕對uri:[http://java.sun.com/jsp/jstl/core]

問題簡介 本人是在進行一個ssm框架項目的編寫的時候,在數據庫中查詢到所有的商品信息并返回到頁面使用EL表達式進行展現,但是使用tomcat 9.0.58運行的時候報錯會出現以下報錯情況。 頁面報錯: 控制臺報錯: 解決方法 首先看看是不…

check the manual that corresponds to your MySQL server version for the right syntax to use near

首先判斷自己是在什么情況下報的錯,如果是MyBatis的SQL報錯的話,建議直接點擊目錄跳轉到MyBatis時SQL報錯,避免浪費時間。如果本文能夠對你有所幫助的話,還請在評論區多多支持 目錄 🍻運行SQL語句、SQL文件等報錯 &…

MyBatis的逆向工程工具,自動生成數據庫對應的POJO實體類、mapper接口、增刪改查mapper.xml文件

下載MyBatis的逆向工程工具,并解壓縮到一個不包含中文字符的文件夾下,我直接放到了D盤下,下載地址:MyBatis逆向工程工具下載 如何使用MyBatis的逆向工程工具 下載之后使用idea在一個新窗口中打開,選中工具文件之后&am…

『收藏向 期末SSM課設救急』 教你從搭建到測試運行手擼一個SSM項目實戰,附帶源碼,前端頁面、解析和一般遇到的問題(排雷)

🛫ssm知識學習見SSM_面向CRUD編程專欄 🚕本項目來自動力節點的【米米商城】 🚒博主對于該知識尚在學習階段 🚄如果發現存在問題請毫不吝嗇的指出 🚀🚀扎哇太棗糕的博客主頁🚀🚀 項目…

【SpringBoot 2】(一)基礎知識了解學習

🛫更多知識總結見SpringBoot 2專欄 🚕本篇知識點總結自尚硅谷雷神的視頻 🚒博主對于該知識尚在學習階段 🚄如果發現存在問題請毫不吝嗇的指出 🚀🚀扎哇太棗糕的博客主頁🚀🚀 ? 目錄…

【SpringBoot 2】(二)快速入門案例HelloWorld

🛫更多知識總結見SpringBoot 2專欄 ( 🚕本篇知識點總結自尚硅谷雷神的視頻 🚒博主對于該知識尚在學習階段 🚄如果發現存在問題請毫不吝嗇的指出 🚀🚀扎哇太棗糕的博客主頁🚀🚀 ? 目…

【SpringBoot 2】(三)SpringBoot相較于Spring的特點

🛫更多知識總結見SpringBoot 2專欄 🚕本篇知識點總結自尚硅谷雷神的視頻 🚒博主對于該知識尚在學習階段 🚄如果發現存在問題請毫不吝嗇的指出 🚀🚀扎哇太棗糕的博客主頁🚀🚀 ? 目錄…

井通swtc能不能漲到2元_買一支2塊到3塊之間的股票,買幾十萬股嗎?這樣操作效果怎么樣?...

有很多新股民有一種看法,認為高價股風險很大,那么可不可以買2到3元的低價股,是不是風險就很小,以后上漲的力度就會很大?這是很多股民都存在的一個誤區,也是很多股市的所謂高手的誤導,他們說&…

cad應用程序的組件中發生了未經處理的異常_什么是CAD/CAM?

與許多其他行業一樣,牙科技術的生產階段也越來越自動化。由于牙科實驗室工作的價格已成為治療計劃和治療的主要因素,因此自動化可以在西歐和美國等高薪地區實現更具競爭力的生產。現在,計算機技術的進步使高性價比的單件生產成為可能。近年來…

【SpringBoot 2】(四)詳析SpringBoot的常用注解

🛫更多知識總結見SpringBoot 2專欄 🚕本篇知識點總結自尚硅谷雷神的視頻 🚒博主對于該知識尚在學習階段 🚄如果發現存在問題請毫不吝嗇的指出 🚀🚀扎哇太棗糕的博客首頁🚀🚀 目錄 向…

蘋果7手機嚴重卡頓_蘋果手機僅配備4GB運存都不會卡頓,安卓系統為何要更多內存?...

原標題:蘋果手機僅配備4GB運存都不會卡頓,安卓系統為何要更多內存?眾所周知,安卓系統歷經十余年的發展,目前最低的運行需求是8GB內存,如果是旗艦機的話還要標配12GB或更高。但是前幾天剛發布的iPhone12&…

python調用窗口找到文件,使用Python在Mac OS X中查找當前活動窗口

Is there a way to find the application name of the current active window at a given time on Mac OS X using Python?解決方案This should work:#!/usr/bin/pythonfrom AppKit import NSWorkspaceactiveAppName NSWorkspace.sharedWorkspace().activeApplication()[NSAp…

IntelliJ IDEA自動生成自定義的類注釋和方法注釋

目錄 自定義的類注釋 自定義方法注釋 實現效果:不用手寫即可自動生成如下圖的類上注釋和方法上的注釋,我們只需要填寫方法注釋的參數和返回值文字描述即可,大大節省了代碼開發的時間提高代碼開發效率。 🌕 自定義的類注釋 Fil…

violinplot如何看懂_一張圖告訴你如何看懂個股大趨勢

昨日在T0交易利好消息的影響下,券商股全線大幅高開,帶動三大指數高開走高,科技題材股全線活躍,兩市量能明顯放大,形成量價齊升的良性態勢,上證沖上2917,收在2915,創業板大漲3%以上&a…

jz指令是什么意思_S7-200 SMART 運動控制指令詳解-電氣阿偉帶小白啟程

大家好,我是工控阿偉,今天又跟大家見面了。學習需要堅持,需要鉆研,做技術亦是如此,厚積才能博發。阿偉寫程序都是自己測試使用過的,需要的可以借鑒,避免走彎路。S7-200 smart 運動控制指令由編程…

【SpringBoot 2】(五)自動配置簡析源碼 開發中小技巧

寫在前面🛫更多知識總結見SpringBoot 2專欄 🚕本篇知識點總結自尚硅谷雷神的視頻 🚒博主對于該知識尚在學習階段 🚄如果發現存在問題請毫不吝嗇的指出 🚀🚀扎哇太棗糕的博客首頁🚀🚀…

jar包導出無法顯示圖片或者音樂_如何制作圖片視頻短片,配上音樂閃耀朋友圈!...

把圖片制作成視頻短片,再配上一首好聽的音樂,發到朋友圈,不僅可以更具創意的分享自己的生活點滴,更能因您的創意獲得一大票的贊哦!看到別人分享自己制作的圖片視頻短片,是不是心癢癢也想做一個呢&#xff1…