aop作為spring這個輕量級的容器中很重要的一部分,得到越來越多的關注,spring的transaction就是用aop來管理的,今天就通過簡單的例子來看看spring中的aop的基本使用方法。
首先確定將要proxy的目標,在spring中預設採用jdk中的dynamic proxy,它只能夠實現介面的**,如果想對類進行**的話,需要採用cglib的proxy。顯然,選擇「程式設計到介面」是更明智的做法,下面是將要**的介面:
public inte***ce foointe***ce
以及其乙個簡單的實現:
public class fooimpl implements foointe***ce
public void dummyfoo()
}接下來建立乙個advice,在spring中支援around,before,after returning和throws四種advice,這裡就以簡單的before advice舉例:
public class printbeforeadvice implements methodbeforeadvice
}有了自己的business inte***ce和advice,剩下的就是如何去裝配它們了,首先利用proxyfactory以程式設計方式實現,如下:
public class aoptestmain
}現在執行程式,神奇的結果就出現了:
主程式不需進行任何修改,執行結果已經變樣了:
in printbeforeadvice
in fooimpl.printfoo
in fooimpl.dummyfoo
/web-inf/jdbc.properties$$
$$
$propagation_required,readonly
propagation_required,readonly
嗯,要想徹底理解spring的aop,最好還是多看看原始碼,開源就是好啊!
Spring FrameWork 學習總結
spring framework主要包含以下內容 1.ioc 和 di ioc容器功能 例項化 初始化元件 裝配元件依賴關係 負責元件生命周管理 ioc inversion of control 是乙個重要的物件導向程式設計的法則來削減電腦程式的耦合問題,也是輕量級spring框架核心。di dep...
Spring FrameWork 總結 依賴
package x.y public class foo beanfactory對於它所管理的bean提供兩種注入依賴方式 實際上它也支援同時使用構造器注入和setter方式注入依賴 需要注入的依賴將儲存在beandefinition中,它能根據指定的propertyeditor實現將屬性從一種格式...
用Spring framework實現定時器功能
採用web自動載入timermanager來治理timer鏈,在class更新伺服器熱載入後會發生異常。這要求對timermanager進行一些非凡的處理才能保證timer鏈的正確性。使用spring framework中提供的timertask自動載入功能可以非常輕易的實現定時器鏈的治理。同時,採...