aop aspect與aop advisor的區別

2021-09-25 10:29:47 字數 1167 閱讀 6257

在開發過程中,不少有spring aop的使用,在面向切面程式設計時,我們會使用< aop:aspect>;在進行事務管理時,我們會使用< aop:advisor>。那麼,對於< aop:aspect>與< aop:advisor>的區別,具體是怎樣的呢?

至於兩者的區別,網上有很多資料,但是似乎都不能說清楚。

首先,我們需要明確兩者的概念。

下面,我們列舉兩者的幾個區別。

< aop:aspect>定義切面時,只需要定義一般的bean就行,而定義< aop:advisor>中引用的通知時,通知必須實現advice介面。

下面我們舉例說明。

首先,我們定義乙個介面sleepable和這個介面的實現human,**如下:

public inte***ce sleepable 

public class human implements sleepable

}

下面是< aop:advisor>的實現方式:

//定義通知

public class sleephelper implements methodbeforeadvice,afterreturningadvice

@override

public void afterreturning(object arg0, method arg1, object arg2,

object arg3) throws throwable

}//aop配置

下面是< aop:aspect>的實現方式:

//定義切面

public class sleephelperaspect

public void aftersleep()

}//aop配置

2、使用場景不同

< aop:advisor>大多用於事務管理。

例如:

< aop:aspect>大多用於日誌,快取

其實,不管是< aop:advisor>還是< aop:aspect>最終的實現邏輯是一樣的。

小結:可以看出,< aop:advisor>和< aop:aspect>其實都是將通知和切面進行了封裝,原理基本上是一樣的,只是使用的方式不同而已。

aop aspect與aop advisor的區別

在開發過程中,不少有spring aop的使用,在面向切面程式設計時,我們會使用 aop aspect 在進行事務管理時,我們會使用 aop advisor 那麼,對於 aop aspect 與 aop advisor 的區別,具體是怎樣的呢?至於兩者的區別,網上有很多資料,但是似乎都不能說清楚。首...

SQL與NoSQL MySQL與NoSQL的融合

寫這一篇內容的原因是mysql5.6.2突然推出了memcached的功能。nosql to innodb with memcached的出現,可以看出nosql對關聯式資料庫的確產生了巨大的影響,個人覺得這是乙個非常大的進步,可以讓開發人員更加方便的使用nosql和關聯式資料庫。nosql一般被認...

指標與陣列 a與 a區別

假設宣告了乙個陣列a,則 a表示陣列a的首位址,a與 a 0 表示陣列a首元素的首位址,那麼 a 1與a 1有哪些區別呢?通過下面的實驗來說明。int i 0 int a 5 int p int a 1 for i 0 i 5 i printf a 0x p,a 0x p,a 1 0x p n a,...