




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
SpringAOP本章目標了解SpringAOP機制的基本原理掌握SpringAOP的配置了解SpringAOP中的通知類型掌握SpringAOP的應用為什么需要AOP什么是AOPAOP是Aspect-OrientedProgrmming的簡稱,意思是面向方面編程。在業務系統中,總有一些散落、滲透到系統各處而且不得不處理的事情,比如安全驗證。我們需要在頁面上判斷用戶是否登錄、當前登錄用戶是否有權限訪問該頁面,在action代碼里還要限制用戶是否通過直接在URL輸入路徑中繞過了頁面的權限控制代碼,甚至在業務層代碼里,還要限制不同用戶訪問的不同數據。如何使用AOP假設,我們要給一個購書系統的業務邏輯方法添加業務日志功能,要求在其業務方法調用前記錄日志,記錄方法調用的時間,調用的業務方法名和調用的參數。分析本需求:我們先給出業務方法的實現,這里的業務代碼僅是單純的業務邏輯,沒有日志記錄。因為在AOP的思想里,日志代碼是單獨實現的,不能加在業務方法代碼中。我們可以在運行邏輯代碼之前做“織入”工作,將“方面代碼”織入到業務系統中。實現模擬業務系統僅模擬業務邏輯層的兩個方法:buy(購書)和comment(添加書評)。在使用Sping的時候,業務邏輯層也常被稱作“服務層”。對應地,BookBiz也可命名為BookService。這僅是命名方式的不同,二者皆可,這里我們使用Biz的命名方式。編寫方面代碼這個分類是根據通知織入到業務代碼時執行的時間劃分的。前置通知是在方法執行前自動執行的通知,后置通知是在方法執行后自動執行的通知,環繞通知能力最強,它可以在方法調用前執行通知代碼,可以決定是否還調用目標方法將方面代碼織入到業務對象中如果直接訪問原來的Bean,通知代碼肯定不會被執行。Spring采用“代理”的方式將通知織入到原Bean中。Spring將原Bean和通知都封裝到xyfactory代理類別中。用戶通過訪問代理類訪問原Bean,這樣就能保證在目標方法調用前先執行前置通知的代碼了。無需一行程序代碼,只需要通過配置完成織入的過程即可,配置工作仍然是在Spring配置文件中完成的。AOP中的概念Aspect(切面):切面指橫切性關注點的抽象,它與類相似,只是兩者的關注點不一樣,類是對物體特征的抽象,而切面是對橫切性關注點的抽象。JoinPoint(連接點):所謂連接點是指那些被攔截到的點。在Spring中,這些點指的是方法,因為Spring只支持方法類型的連接點(實際上連接點還可以是Field或類構造器)。Pointcut(切入點):所謂切入點是指我們要對哪些連接點進行攔截的定義。Advice(通知):所謂通知是指攔截到連接點之后所要做的事情。通知分為前置通知,后置通知,異常通知,最終通知和環繞通知。Target(目標對象):代理的目標對象。Weave(織入):織入是指將切面應用到目標對象并導致代理對象創建的過程。Introduction(引入):在不修改類代碼的前提下,Introduction可以在運行期為類動態地添加一些方法或Field。使用Spring進行面向切面編程基于注解方式聲明切面首先,啟動對@Aspect注解的支持;接著,基于注解方式聲明切面;最后,編寫測試代碼。基于XML配置方式聲明切面首先,在Spring的配置文件中引入aop命名空間;接著,基于XML配置方式聲明切面;然后,定義接口OrderService,再來定義該接口的實現類;最后在Spring配置文件Spring+JDBC組合開發JdbcTemplate是core包的核心類。它替我們完成了資源的創建以及釋放工作,從而簡化了JDBC的使用,通過傳遞一個DataSource引用來完成JdbcTemplate的實例化。JdbcTemplate的常用方法包括:update()方法:可以執行insert、update和delete語句。queryForXXX()方法:可以執行select語句。使用Spring+JDBC集成步驟使用Spring+JDBC集成步驟如下第一步,配置數據源第二步,配置事務配置事務時,需要在XML配置文件中引入用于聲明事務的tx命名空間,事務的配置方式有兩種:注解方式和基于XML配置方式。在Spring配置文件中引入用于聲明事務的tx命名空間:事務傳播屬性
REQUIRED:業務方法需要在一個事務中運行。如果方法運行時,已經處在一個事務中,那么加入到該事務,否則為自己創建一個新的事務。NOT_SUPPORTED:聲明方法不需要事務。如果方法沒有關聯到一個事務,容器不會為它開啟事務。如果方法在一個事務中被調用,該事務會被掛起,在方法調用結束后,原先的事務便會恢復執行。REQUIRESNEW:屬性表明不管是否存在事務,業務方法總會為自己發起一個新的事務。如果方法已經運行在一個事務中,則原有事務會被掛起,新的事務會被創建,直到方法執行結束,新事務才算結束,原先的事務才會恢復執行。MANDATORY:該屬性指定業務方法只能在一個已經存在的事務中執行,業務方法不能發起自己的事務。如果業務方法在沒有事務的環境下調用,容器就會拋出例外。SUPPORTS:這一事務屬性表明,如果業務方法在某個事務范圍內被調用,則方法成為該事務的一部分。如果業務方法在事務范圍外被調用,則方法在沒有事務的環境下執行。Never:指定業務方法絕對不能在事務范圍內執行。如果業務方法在某個事務中執行,容器會拋出例外,只有業務方法沒有關聯到任何事務,才能正常執行。NESTED:如果一個活動的事務存在,則運行在一個嵌套的事務中.如果沒有活動事務,則按REQUIRED屬性執行.它使用了一個單獨的事務,這個事務擁有多個可以回滾的保存點。內部事務的回滾不會對外部事務造成影響。它只對DataSourceTransactionManager事務管理器有效。事務傳播屬性
MANDATORY:該屬性指定業務方法只能在一個已經存在的事務中執行,業務方法不能發起自己的事務。如果業務方法在沒有事務的環境下調用,容器就會拋出例外。SUPPORTS:這一事務屬性表明,如果業務方法在某個事務范圍內被調用,則方法成為該事務的一部分。如果業務方法在事務范圍外被調用,則方法在沒有事務的環境下執行。Never:指定業務方法絕對不能在事務范圍內執行。如果業務方法在某個事務中執行,容器會拋出例外,只有業務方法沒有關聯到任何事務,才能正常執行。NESTED:如果一個活動的事務存在,則運行在一個嵌套的事務中.如果沒有活動事務,則按REQUIRED屬性執行.它使用了一個單獨的事務,這個事務擁有多個可以回滾的保存點。內部事務的回滾不會對外部事務造成影響。它只對DataSourceTransactionManager事務管理器有效。總結AOP的目的是從系統中分離出方面,獨立于業務邏輯實現,在程序執行時織入程序中運行。方面代碼在AOP中以通知的形式封裝。通知分前置通知、后置通知、環繞通知和異常通知。Spring配置文件是完成組裝的主要場所,常用節點包括<
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論