欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
Spring框架中的AOP思想動(dòng)態(tài)代理模式
一 AOP(Aspect oriented programming) 面向方面編程
OOP面向對象編程
AOP和OOP雖然在字面上十分相似,但卻是面向不同領(lǐng)域的兩種設計思想.OOP是在面向過(guò)程的編程方法基礎上進(jìn)行的改進(jìn),而AOP面向方面編程又是在面向對象編程的基礎上進(jìn)行改進(jìn)而來(lái)的一種新的軟件開(kāi)發(fā)方法.OOP針對問(wèn)題領(lǐng)域中存在的實(shí)體及其屬性和操作進(jìn)行抽象和封裝,而AOP則是針對業(yè)務(wù)處理過(guò)程中的切面進(jìn)行提取.
例如: 某一操作在各個(gè)模塊中都有涉及,就可把這個(gè)操作"橫切"存在于系統當中,這些操作大都不屬于邏輯操作的部分,AOP就是將這些操作與業(yè)務(wù)邏輯分離,AOP所面對的是處理過(guò)程中的某個(gè)步驟或階段.
              AOP的核心思想:
    就是將應用程序中的業(yè)務(wù)邏輯處理部分同對其提供的通用服務(wù)部分即"橫切關(guān)注點(diǎn)"進(jìn)行分離.
 
二 Sping框架的特點(diǎn) AOP的應用
Spring框架目前如此流行,大概一方面是Spring提供了一套全面并且十分成熟的輕型應用程序基礎框架,對復雜的應用開(kāi)發(fā)提供了幫助,另一方面,實(shí)際開(kāi)發(fā)中Spring最大的優(yōu)勢在于它是從實(shí)際項目開(kāi)發(fā)經(jīng)驗中抽取的,并提供了豐富的類(lèi)庫,可大大節省編碼量,不過(guò)Spring框架中最吸引人的也是該應用框架最具特色的地方就是IoC控制反轉或者DI依賴(lài)注入.比如說(shuō) 不用你主動(dòng)來(lái)找我,我會(huì )通知你的
 
但是Spring最成功的地方還是AOP的應用.
Spring應用程序框架將AOP思想融入了整個(gè)框架的設計和開(kāi)發(fā)與應用中,實(shí)際上是一種設計式的擴展.其內置AOP默認是使用動(dòng)態(tài)代理模式實(shí)現,即在代碼中不出現與具體要用到的接口或者類(lèi)的引用. 即動(dòng)態(tài)代理的核心技術(shù)
 
三 Spring動(dòng)態(tài)代理機制的實(shí)現
通過(guò)動(dòng)態(tài)Proxy模式,在目標對象的方法調用前后插入相應的處理代碼,任何的接口都能被代理,也符合”面向接口編程”的良好風(fēng)格.
Spring實(shí)現原理,其內置的AOP默認使用動(dòng)態(tài)代理模式實(shí)現,即在代碼中不出現與具體應用相關(guān)的接口或者類(lèi)引用.即這個(gè)代理類(lèi)適用于任何接口的實(shí)現
例:
public class MyInvocationHandler implements InvocationHandler
{
       private Object originalObject;
       public Object bind(Object obj)
       {
              this.orginalObject = obj;
              return Proxy.newProxyInstance(obj.getClass().getClassLoader(),obj.getClass().getInterfaces(),this);
       }
      
       public Object invoke(Object proxy,Method method,Object [] args)throws Throwable
       {
              Object result = null;
              result = method.invoke(originalObject,args);
              return result;
       }
}
分析一下上述代碼的關(guān)鍵
return Proxy.newProxyInstance(obj.getClass().getClassLoader(),obj.getClass().getInterfaces(),this);
java.lang.reflect.Proxy.newProxyInstance方法根據傳入的接口類(lèi)型obj.getClass().getInterfaces()動(dòng)態(tài)構造出一個(gè)代理實(shí)例返回,這也說(shuō)明為什么動(dòng)態(tài)代理實(shí)現要求其所代理的對象一定要至少實(shí)現一個(gè)接口.因這個(gè)代理類(lèi)實(shí)例是在運行時(shí)從內存中動(dòng)態(tài)構造出的它實(shí)現了傳入的所有接口.
 
public Object invoke(Object proxy,Method method,Object [] args) throws Throwable
{
       …
       result = method.invoke(originalObject,args)
}    
       InvocationHandler.invoke方法將在代理類(lèi)的方法將在代理類(lèi)的方法被調用之前觸發(fā).通過(guò)這個(gè)方法,我們可以在被代理類(lèi)方法調用的前后進(jìn)行一些處理,在上述方法中,InvocationHandler.invoke方法的參數中傳遞了當前被調用的方法Method,被調用方法的參數args,通過(guò)method.invoke方法調用被代理類(lèi)的原始方法實(shí)現.這樣就可以在被代理類(lèi)的方法調用前后寫(xiě)入任何想要進(jìn)行的操作.
 


Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1201828

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Spring框架與AOP思想的研究與應用
設計模式--代理模式 - 設計模式
代理模式、動(dòng)態(tài)代理和面向方面(AOP)
Spring AOP 本質(zhì)系列之動(dòng)態(tài)代理
秒懂Java代理與動(dòng)態(tài)代理模式
Spring aop的實(shí)現原理
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久