在spring框架中學習與測試aop。
第一步:需要匯入對應的所需要的jar包:
第二步:在beans.xml檔案中進行配置(命名標籤的配置):
注意:要在配置中加入我注釋的那三行。
第一次把第一行漏掉了,導致我在接下來的步驟中報錯,直接無法找到對應的命名標籤。
第三步:即可對aop進行例項操作了。
由於才開始學,以下是我對aop的粗淺理解,以及操作。可能會有錯誤,還請指正。
spring框架的aop框架是面向方面。而不是物件導向程式設計,即它不是針對物件。也就是說多個物件
都有可能觸發它。在粗淺的理解,物件進行操作時都會觸發它,如日誌,每當任何物件有操作時,
日誌都會列印相關資訊,以便維護人員觀察。而日誌的列印不是根據物件。而是根據操作。無論哪個物件,
只要它有動作,就會列印。
根據這個spring方面有5種通知:
3.返回後通知:當某個物件執行完方法之後,只有在方法成功完成時,才能執行通知。
4.丟擲異常後通知:當某個物件執行完方法之後,只有在方法退出丟擲異常時,才能執行通知。
5.環繞通知:在建議方法呼叫之前和之後,執行通知。
接下來先給出相應的例項類,然後在分析aop
1.logging類:相當於日誌,每當有方法執行時,它都會被通知到,並作出響應。
package com.tutorialspoint;
public class logging
/**
* this is the method which i would like to execute
* after a selected method execution.
*/public void afteradvice()
/**
* this is the method which i would like to execute
* when any method returns.
*/public void afterreturningadvice(object retval)
/*** this is the method which i would like to execute
* if there is an exception raised.
*/public void afterthrowingadvice(illegalargumentexception ex)
}
2.student類,是我們一會將要有執行方法的類。
package com.tutorialspoint;
public class student
public integer getage()
public void setname(string name)
public string getname()
public void printthrowexception()
}
package com.tutorialspoint;
public static void main(string args)
}}
4.beans.xml
<?xml version="1.0" encoding="utf-8"?>
以下是**執行結果,然後我們在進行分析:
分析:1.我們先分析一下beans.xml中對aop的配置
1.是aop的配置的宣告:表明該標籤中是aop的配置資訊。
2. aop:aspect id="log" ref="logging" :
aspect:宣告乙個aop模組,該模組的id為:「log」。 ref則是引用的到類的名稱,即當aop有執行時,它執行的是「logging」中 的方法。
3.pointcut :表明應用程式中的乙個點,該點名稱是「selectall」,並且相關聯的是com.tutorialspoint.*.*(..)),也就是說當 com.tutorialspoint包中的所有物件有方法執行時,aop都會被通知,並且響應。(由此我們可以理解aop並不是針對某個物件,而是所有。)
4.而第四部分則4種通知,它執行的方法則是對應的logging中的4個對應方法。
2.我們來根據執行,分析一下結果:
1.先列印:「-----------------」
2.我們要執行student物件中getname方法。而該物件屬於com.tutorialspoint,根據配置我們可以看到它會觸發aopbefore的通知,
而配置中,before通知指向的是logging中的beforeadvice()方法,則會執行該方法,並輸出:
「going to setup student profile.」
3.getnmae方法才開始真正執行,於是輸出:「name : zara」 (該引數是在beans.xml中已配置)。
4.getnmae方法執行完成,根據配置又會後置通知,而後置通知根據配置執行的是logging類中的
afteradvice()方法,於是列印:「student profile has been setup.」。
5.由於getname執行成功並有返回值,於是返回後通知也開始執行,對應的是logging中的afterreturningadvice(object retval)
方法,於是列印:「returning:zara 」;
6.則第乙個getnmae算是執行完全。
7.第二個getage也是同樣!
由此可以得到輸出結果:
以上!
Spring框架 中的 AOP的說明
snipaste 2019 07 04 11 30 28.png 在程式執行期間,不修改原始碼對已有方法進行增強。優勢 減少重複 提高開發效率維護方便1.1.3 aop 的實現方式使用動態 技術 所謂連線點是指那些被攔截到的點。在 spring 中,這些點指的是方法,因為 spring 只支援方法型...
對Spring框架中AOP的理解
在今天讀了文章後對aop做了一些自己的理解,現記錄於此,共同交流。springaop就是所謂的切面程式設計,但要怎麼理解這個切面程式設計呢,舉乙個例子,現在我在乙個類中有a b c三個方法,這在執行這三個方法時我想要在每個方法的執行前後各輸出日誌資訊,那麼正常的操作是在每乙個方法中都要加上輸出日誌的...
Spring框架 AOP細節
知己海記憶體 2016 11 24 10 17 1切入點表示式 1.1作用 通過表示式的方式定位乙個或多個具體的連線點。1.2語法細節 切入點表示式的語法格式 execution 許可權修飾符 返回值型別 簡單類名 全類名 方法名 引數列表 舉例說明 表示式execution com.atguigu...