概念:aop(aspect-oriented programming)即面向切面程式設計。它是對傳統的oop(物件導向)程式設計的一種補充,在oop中往往乙個物件有什麼行為我們就定義什麼方法,物件與物件之間存在緊密聯絡。與oop不同的是aop更加關注的是切面,我們只需要關注於物件的核心業務而不是所有的業務。
如同上圖1中所示,兩個螺絲就是一種緊密耦合的關係, 一旦一方存在問題,另一方也必須做出相應調整。而圖2為乙個筆記本的usb插口,只要符合這個介面的裝置都可以使用這個插口。
在程式中也和現實生活一樣,使用spring aop就是一種典型的非耦合案例,aop的核心之一就是我們的非核心業務與我們的核心業務解耦。
具體實現:(本例我們模擬乙個女孩子的日常生活,去kfc,約會,遛狗幾個事務)
第一步:既然是使用spring自然要配置相關環境,然後直接寫我們的核心業務,而在乙個程式中我們在多個流程中反覆出現的一些非核心**抽取出來由**給我們管理。我們發現這幾個事務之前我們的物件(女孩子)都要洗澡,化妝......之後都要卸妝....這些非邏輯業務便是我們需要分離出來的。
1本例中的物件還乙個dog屬性因此我們還乙個dog物件以及它的方法package
aop_demo;23
/*4* 5
*/6public
class girl1 implements
girl
1314
public
void
kfc(string datetime)
1920
public
void
meet(string datetime)
2627
29@override
30public
void
playdog()
3536 }
1第二步,統一管理我們的非核心業務也就是**了。package
aop_demo;23
public
class dog_taidi implements
dog
910 }
上圖中的通知其本質也就是**,由於本例中前後都有非核心業務,因此我們選擇環繞通知
第四步,構造我們的測試程式
1package
aop_demo;23
import
4import56
public
class
test
2526 }
深入理解Spring AOP實現
總所周知,spring通過動態 的方式實現aop處理,那麼當我們呼叫乙個被aop處理的方法,其內部是如何實現的呢?我們以jdk動態 為例,當我們訪問 物件到最後訪問目標方法,jdkdynamicaopproxy採用了如下步驟 jdk動態 使用getproxy方法獲取 物件,進入getproxy方法 ...
深入理解C語言 深入理解指標
關於指標,其是c語言的重點,c語言學的好壞,其實就是指標學的好壞。其實指標並不複雜,學習指標,要正確的理解指標。指標也是一種變數,占有記憶體空間,用來儲存記憶體位址 指標就是告訴編譯器,開闢4個位元組的儲存空間 32位系統 無論是幾級指標都是一樣的 p操作記憶體 在指標宣告時,號表示所宣告的變數為指...
mysql 索引深入理解 深入理解MySql的索引
為什麼索引能提高查詢速度 先從 mysql的基本儲存結構說起 mysql的基本儲存結構是頁 記錄都存在頁裡邊 各個資料頁可以組成乙個雙向鍊錶每個資料頁中的記錄又可以組成乙個單向鍊錶 每個資料頁都會為儲存在它裡邊兒的記錄生成乙個頁目錄,在通過主鍵查詢某條記錄的時候可以在頁目錄中使用二分法快速定位到對應...