具體思想是:定義一個切面,在切面的縱向定義處理方法,處理完成之後,回到橫向業務流。
AOP 在Spring框架中被作爲核心組成部分之一,的確Spring將AOP發揮到很強大的功能。最常見的就是事務控制。工作之餘,對於使用的工具,不免需要了解其所以然。學習了一下,寫了些程序幫助理解。
AOP 主要是利用代理模式的技術來實現的。
============================
1、靜態代理:就是設計模式中的proxy模式
a.業務接口
b.業務實現
c.代理對象
d.測試類
從這段代碼可以看出來,代理模式其實就是AOP的雛形。 上端代碼中talk(String msg, String singname)是一個切面。在代理類中的sing(singname)方法是個後置處理方法。
這樣就實現了,其他的輔助方法和業務方法的解耦。業務不需要專門去調用,而是走到talk方法,順理成章的調用sing方法
再從這段代碼看:1、要實現代理方式,必須要定義接口。2、每個業務類,需要一個代理類。
============================
2、動態代理:jdk1.5中提供,利用反射。實現InvocationHandler接口。
a.代理類
b.測試類
輸出結果會是:
切面之前執行
people talk業務說法
切面之後執行
說明只要在業務調用方法切面之前,是可以動態的加入需要處理的方法。
從代碼來看,如果再建立一個業務模塊,也只需要一個代理類。ITalk iTalk = (ITalk) new DynamicProxy().bind(new PeopleTalk()); 將業務接口和業務類綁定到動態代理類。
但是這種方式:還是需要定義接口。
============================
3、利用cglib
a.業務類
b.代理類
c.測試類
最後輸出結果:
事物開始
people talk業務方法
事物結束
事物開始
spreak chinese業務方法
事物結束
轉載自:https://www.cnblogs.com/pwc1996/p/4839150.html