版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
SpringAOP本章目標了解SpringAOP機制的基本原理掌握SpringAOP的配置了解SpringAOP中的通知類型掌握SpringAOP的應(yīng)用為什么需要AOP什么是AOPAOP是Aspect-OrientedProgrmming的簡稱,意思是面向方面編程。在業(yè)務(wù)系統(tǒng)中,總有一些散落、滲透到系統(tǒng)各處而且不得不處理的事情,比如安全驗證。我們需要在頁面上判斷用戶是否登錄、當前登錄用戶是否有權(quán)限訪問該頁面,在action代碼里還要限制用戶是否通過直接在URL輸入路徑中繞過了頁面的權(quán)限控制代碼,甚至在業(yè)務(wù)層代碼里,還要限制不同用戶訪問的不同數(shù)據(jù)。如何使用AOP假設(shè),我們要給一個購書系統(tǒng)的業(yè)務(wù)邏輯方法添加業(yè)務(wù)日志功能,要求在其業(yè)務(wù)方法調(diào)用前記錄日志,記錄方法調(diào)用的時間,調(diào)用的業(yè)務(wù)方法名和調(diào)用的參數(shù)。分析本需求:我們先給出業(yè)務(wù)方法的實現(xiàn),這里的業(yè)務(wù)代碼僅是單純的業(yè)務(wù)邏輯,沒有日志記錄。因為在AOP的思想里,日志代碼是單獨實現(xiàn)的,不能加在業(yè)務(wù)方法代碼中。我們可以在運行邏輯代碼之前做“織入”工作,將“方面代碼”織入到業(yè)務(wù)系統(tǒng)中。實現(xiàn)模擬業(yè)務(wù)系統(tǒng)僅模擬業(yè)務(wù)邏輯層的兩個方法:buy(購書)和comment(添加書評)。在使用Sping的時候,業(yè)務(wù)邏輯層也常被稱作“服務(wù)層”。對應(yīng)地,BookBiz也可命名為BookService。這僅是命名方式的不同,二者皆可,這里我們使用Biz的命名方式。編寫方面代碼這個分類是根據(jù)通知織入到業(yè)務(wù)代碼時執(zhí)行的時間劃分的。前置通知是在方法執(zhí)行前自動執(zhí)行的通知,后置通知是在方法執(zhí)行后自動執(zhí)行的通知,環(huán)繞通知能力最強,它可以在方法調(diào)用前執(zhí)行通知代碼,可以決定是否還調(diào)用目標方法將方面代碼織入到業(yè)務(wù)對象中如果直接訪問原來的Bean,通知代碼肯定不會被執(zhí)行。Spring采用“代理”的方式將通知織入到原Bean中。Spring將原Bean和通知都封裝到xyfactory代理類別中。用戶通過訪問代理類訪問原Bean,這樣就能保證在目標方法調(diào)用前先執(zhí)行前置通知的代碼了。無需一行程序代碼,只需要通過配置完成織入的過程即可,配置工作仍然是在Spring配置文件中完成的。AOP中的概念Aspect(切面):切面指橫切性關(guān)注點的抽象,它與類相似,只是兩者的關(guān)注點不一樣,類是對物體特征的抽象,而切面是對橫切性關(guān)注點的抽象。JoinPoint(連接點):所謂連接點是指那些被攔截到的點。在Spring中,這些點指的是方法,因為Spring只支持方法類型的連接點(實際上連接點還可以是Field或類構(gòu)造器)。Pointcut(切入點):所謂切入點是指我們要對哪些連接點進行攔截的定義。Advice(通知):所謂通知是指攔截到連接點之后所要做的事情。通知分為前置通知,后置通知,異常通知,最終通知和環(huán)繞通知。Target(目標對象):代理的目標對象。Weave(織入):織入是指將切面應(yīng)用到目標對象并導致代理對象創(chuàng)建的過程。Introduction(引入):在不修改類代碼的前提下,Introduction可以在運行期為類動態(tài)地添加一些方法或Field。使用Spring進行面向切面編程基于注解方式聲明切面首先,啟動對@Aspect注解的支持;接著,基于注解方式聲明切面;最后,編寫測試代碼?;赬ML配置方式聲明切面首先,在Spring的配置文件中引入aop命名空間;接著,基于XML配置方式聲明切面;然后,定義接口OrderService,再來定義該接口的實現(xiàn)類;最后在Spring配置文件Spring+JDBC組合開發(fā)JdbcTemplate是core包的核心類。它替我們完成了資源的創(chuàng)建以及釋放工作,從而簡化了JDBC的使用,通過傳遞一個DataSource引用來完成JdbcTemplate的實例化。JdbcTemplate的常用方法包括:update()方法:可以執(zhí)行insert、update和delete語句。queryForXXX()方法:可以執(zhí)行select語句。使用Spring+JDBC集成步驟使用Spring+JDBC集成步驟如下第一步,配置數(shù)據(jù)源第二步,配置事務(wù)配置事務(wù)時,需要在XML配置文件中引入用于聲明事務(wù)的tx命名空間,事務(wù)的配置方式有兩種:注解方式和基于XML配置方式。在Spring配置文件中引入用于聲明事務(wù)的tx命名空間:事務(wù)傳播屬性
REQUIRED:業(yè)務(wù)方法需要在一個事務(wù)中運行。如果方法運行時,已經(jīng)處在一個事務(wù)中,那么加入到該事務(wù),否則為自己創(chuàng)建一個新的事務(wù)。NOT_SUPPORTED:聲明方法不需要事務(wù)。如果方法沒有關(guān)聯(lián)到一個事務(wù),容器不會為它開啟事務(wù)。如果方法在一個事務(wù)中被調(diào)用,該事務(wù)會被掛起,在方法調(diào)用結(jié)束后,原先的事務(wù)便會恢復執(zhí)行。REQUIRESNEW:屬性表明不管是否存在事務(wù),業(yè)務(wù)方法總會為自己發(fā)起一個新的事務(wù)。如果方法已經(jīng)運行在一個事務(wù)中,則原有事務(wù)會被掛起,新的事務(wù)會被創(chuàng)建,直到方法執(zhí)行結(jié)束,新事務(wù)才算結(jié)束,原先的事務(wù)才會恢復執(zhí)行。MANDATORY:該屬性指定業(yè)務(wù)方法只能在一個已經(jīng)存在的事務(wù)中執(zhí)行,業(yè)務(wù)方法不能發(fā)起自己的事務(wù)。如果業(yè)務(wù)方法在沒有事務(wù)的環(huán)境下調(diào)用,容器就會拋出例外。SUPPORTS:這一事務(wù)屬性表明,如果業(yè)務(wù)方法在某個事務(wù)范圍內(nèi)被調(diào)用,則方法成為該事務(wù)的一部分。如果業(yè)務(wù)方法在事務(wù)范圍外被調(diào)用,則方法在沒有事務(wù)的環(huán)境下執(zhí)行。Never:指定業(yè)務(wù)方法絕對不能在事務(wù)范圍內(nèi)執(zhí)行。如果業(yè)務(wù)方法在某個事務(wù)中執(zhí)行,容器會拋出例外,只有業(yè)務(wù)方法沒有關(guān)聯(lián)到任何事務(wù),才能正常執(zhí)行。NESTED:如果一個活動的事務(wù)存在,則運行在一個嵌套的事務(wù)中.如果沒有活動事務(wù),則按REQUIRED屬性執(zhí)行.它使用了一個單獨的事務(wù),這個事務(wù)擁有多個可以回滾的保存點。內(nèi)部事務(wù)的回滾不會對外部事務(wù)造成影響。它只對DataSourceTransactionManager事務(wù)管理器有效。事務(wù)傳播屬性
MANDATORY:該屬性指定業(yè)務(wù)方法只能在一個已經(jīng)存在的事務(wù)中執(zhí)行,業(yè)務(wù)方法不能發(fā)起自己的事務(wù)。如果業(yè)務(wù)方法在沒有事務(wù)的環(huán)境下調(diào)用,容器就會拋出例外。SUPPORTS:這一事務(wù)屬性表明,如果業(yè)務(wù)方法在某個事務(wù)范圍內(nèi)被調(diào)用,則方法成為該事務(wù)的一部分。如果業(yè)務(wù)方法在事務(wù)范圍外被調(diào)用,則方法在沒有事務(wù)的環(huán)境下執(zhí)行。Never:指定業(yè)務(wù)方法絕對不能在事務(wù)范圍內(nèi)執(zhí)行。如果業(yè)務(wù)方法在某個事務(wù)中執(zhí)行,容器會拋出例外,只有業(yè)務(wù)方法沒有關(guān)聯(lián)到任何事務(wù),才能正常執(zhí)行。NESTED:如果一個活動的事務(wù)存在,則運行在一個嵌套的事務(wù)中.如果沒有活動事務(wù),則按REQUIRED屬性執(zhí)行.它使用了一個單獨的事務(wù),這個事務(wù)擁有多個可以回滾的保存點。內(nèi)部事務(wù)的回滾不會對外部事務(wù)造成影響。它只對DataSourceTransactionManager事務(wù)管理器有效??偨Y(jié)AOP的目的是從系統(tǒng)中分離出方面,獨立于業(yè)務(wù)邏輯實現(xiàn),在程序執(zhí)行時織入程序中運行。方面代碼在AOP中以通知的形式封裝。通知分前置通知、后置通知、環(huán)繞通知和異常通知。Spring配置文件是完成組裝的主要場所,常用節(jié)點包括<
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 蘇教版小學數(shù)學一年級上冊教案
- 韓愈晚春課件教學課件
- 白樺課文課件教學課件
- 臨床科室醫(yī)院感染物資管理小組
- 產(chǎn)業(yè)示范物業(yè)管理:思路與目標
- 臨海市餐飲業(yè)員工合同模板
- 臨時租賃協(xié)議模板
- 互聯(lián)網(wǎng)合作協(xié)議爭議仲裁語言
- 傳染病護理中的護理管理總論
- 臨沂共享經(jīng)濟行業(yè)勞動合同范本
- 醫(yī)務(wù)人員職業(yè)暴露預防及處理課件(完整版)
- 期中階段性練習(一~四單元)(試題)-2024-2025學年五年級上冊數(shù)學蘇教版
- 《病人安全護理學》-教學大綱
- 項目分成比例合同模板
- GB 27887-2024機動車兒童乘員用約束系統(tǒng)
- 期中考試模擬試卷 2024-2025學年人教版數(shù)學九年級上冊
- CJT 497-2016 城市軌道交通橋梁伸縮裝置
- 中外政治思想史-形成性測試二-國開(HB)-參考資料
- 公路工程施工安全技術(shù)規(guī)范
- “碑學”、“帖學”獻疑.doc
- 四宗宗義比較略記
評論
0/150
提交評論