spring的AOP

Aop

面向切面編程    aspect oriented programing

aop關注的不再是程序代碼中的某個類,某些方法,考慮更多的是一種面到面的切入,即層與層之間的一種切入。

用處:

aop主要用於日誌記錄,性能統計,安全控制,事務處理等方面,實現公共功能性的重複使用。

好處:

1. 降低模塊與模塊之間的耦合度,提高業務代碼的聚合度。

2. 提高代碼的複用性。

3. 提高系統的擴展性。


基本概念

連接點 Joinpoint

被攔截到的每個點,spring中指被攔截到的每一個方法,spring aop 一個連接點即代表一個方法的執行。

切入點 Pointcut

對連接點進行攔截的定義。即匹配規則的定義,規定攔截哪些方法,對哪些方法進行處理。

通知 advice

攔截到每一個連接點後要做的操作。

前置通知 before:執行連接點方法前通知

返回通知 afterturn:連接點方法正常結束後返回的通知

異常通知 afterThrow:連接點方法出異常時通知

最終通知 after :連接點方法結束時通知

環繞通知 around:包圍連接點方法的通知

切面 Aspect

切面則是橫切關注點的抽象。

目標對象 Target

被代理的目標對象

織入 Weave

將切面應用到目標對象,並生成代理對象的這個過程即爲織入

引入 Introduction

在不修改原有應用程序代碼的情況下,在程序運行期爲類動態添加方法或者屬性的過程爲引入。


AOP處理日誌問題

1. 命名空間 2 配置aop代理 <aop:aspectj-autoproxy/>


代理模式實現三要素

1.接口定義 2.目標對象和代理對象實現統一的接口 3. 代理對象持有目標對象的引用,增強目標對象行爲

代理模式實現分類以及對應區別

靜態代理:手動爲目標對象製作代理對象,即在程序編譯階段完成代理對象的創建

動態代理:在程序運行期動態創建目標對象對應的代理對象

jdk動態代理:被代理目標對象必須實現摸一個或某一組接口,通過回調創建代理對象。

cglib動態代理:被代理目標可以不必實現接口,通過繼承實現。

動態代理好處:提高開發效率,可以批量化創建代理,提高代碼複用率。

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