aop技術理解使用


一、什么是AOP?

  aop技術是面向切面編程思想,作為OOP的延續思想添加到企業開發中,用於彌補OOP開發過程中的缺陷而提出的編程思想。AOP底層也是面向對象;只不過面向的不是普通的Object對象,而是特殊的AOP對象。AOP的關注點是組成系統的非核心通用服務模塊(比如登錄檢查等),相對於普通對象,aop不需要通過繼承、方法調用的方式來提供功能,只需要在xml文件中以引用的方式,將非核心服務功能引用給需要改功能的核心業務邏輯對象或方法中。最終實現對象的解耦。spring 中ioc技術實現了核心業務邏輯對象之間的解耦(如LoginAction與DaoImpl)

二、AOP相對於OOP有什么好處?

   OOP,面對對象編程思想。OOP的問題不存在於開發階段,在開發階段和首次測試階段中,使用OOP是效率最高也是最簡單的一種方式。OOP問題體現在軟件開發完畢之后的二次測試階段,軟件修改完畢之后,需要對軟件中修改的方法進行重新測試,之后才可以上線運行。這時測試的對象是當前修改的方法 以及 和該方法具有級聯/依賴關系的所有的其他方法。這樣做顯然了延長二次測試周期。 而使用aop在二次測試時,因為他是配置在xml文件中的,所以並不需要測試相關的所有類。

三、spring中如何使用aop?

我們使用一個例子來介紹下如何在spring中使用aop, 
這里我們提供一個類StuAction,為這個類中的核心業務邏輯方法(addStu、delStu)添加登錄檢查的功能。

spring中的AOP技術提供了四種基本類型的通知:

  • before通知 ~ 核心方法執行之前的通知 MethodBeforeAdvice
  • after通知 ~ 核心方法執行之后的通知 AfterReturningAdvice
  • around通知 ~ 核心方法執行時的通知before+after filter、interceptor都是一種around通知 MethodInterceptor
  • throws通知 ~ 核心方法執行出現異常之后執行的通知 ThrowsAdvice

這四種通知我們都來測試下: 
注意:在測試athrows通知時把StuAction中的int i = 1/0;取消注釋,我們創建一個異常來進行測試。 
另外,after通知主要用來核心方法調用結束后輸出日志,所以這里用到了log4j 。

log4j.properties

好了,准備工作完畢,那我們如何在spring容器中配置aop呢? 
重點的來了! 
在applicationContext.xml中配置aop: 
首先導入spring 中aop下所有包,log4j 包

使用test類測試一下:

結果如下: 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM