Spring AOP 初探

晚上參閱着Spring手冊接觸了Spring AOP方面的內容,瞭解不少,哪會兒模仿着手冊中的實例和一些說明自己做了個小例子,涉及到的知識點不是很多,不過很有成就感,分享下也可備初次接觸Spring AOP後來者參考。

首先簡單陳述下AOP的原理:傳統OOP在程序成型後,在需要添加業務邏輯時往往需要重新修改整合代碼,這樣違背了開放-封閉原則,不利於維護。而AOP指面向方面編程,簡單說就是可在舊有代碼的執行流程中橫切幾刀在交接的切面上加上自己的業務邏輯後再繼續原有執行流程。這樣的話一般業務邏輯的更改都可交由AOP技術實現。

自己的例子中涉及到的兩個概念:Pointcut指定要加入業務邏輯的位置,簡單直白的說就是指定在哪一個類的哪一個方法上加入;Advice顧名思義,自己的程序邏輯要添加在切面的哪個階段即對切面執行順序的建議,我用到Before、After、AfterThrowing分別對應切面執行前、執行後、拋出異常後的情況。具體來說是對三個Advice類型@Before、@After、@AfterThrowing和PointCut的應用。AOP部分使用的是註解方式,IoC部分使用的XML配置。另外注意被加入邏輯的類應該實現一個接口,因爲Spring對AOP的支持應用的技術是動態代理。

程序模擬的是簡單的一個保存用戶的過程,下面進入正題:

原始類代碼和未使用AOP技術前程序執行結果

原有方法

OriginalResult

加入AOP的程序產生的大致步驟和執行結果如下

     1、引入需要的jar包--我把使用Spring相關的通常依賴的jar包都加入到了自定義庫裏,有些當然不是AOP用到的,我就不深究它們的關係了。

Spring包

     2、在Spring配置文件里加入對Aop的支持,包括命名空間和使用到的標籤。

Spring配置文件

     3、定義切面類,在類定義前面加上@Aspect的註解標記,添加一方法作爲Pointcut的簽名;添加要加入的業務邏輯方法:在方法前加上Advice類型並設定好Value值即要加入業務邏輯的切面。

切面類

     4、在Spring配置文件里加入Advice對應的Bean,還有由Spring管理的UserServiceImp對應的Bean。

簡單AOP完整配置

     6、編寫測試類。

測試 

    7、最後執行測試可看到JUnit指示和命令行裏被加入的程序邏輯。

testResult

CommandResult

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章