一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Java輕量級業(yè)務(wù)層框架Spring兩大核心IOC和AOP原理

 liuguichuan 2015-01-16

IoC(Inversion of Control)

  (1)IoC(Inversion of Control)是指容器控制程序?qū)ο笾g的關(guān)系,而不是傳統(tǒng)實(shí)現(xiàn)中,由程序代碼直接操控??刂茩?quán)由應(yīng)用代碼中轉(zhuǎn)到了外部容器,控制權(quán)的轉(zhuǎn)移是所謂反轉(zhuǎn)。對于Spring而言,就是由Spring來控制對象的生命周期和對象之間的關(guān)系;IoC還有另外一個(gè)名字——“依賴注入(Dependency Injection)”。從名字上理解,所謂依賴注入,即組件之間的依賴關(guān)系由容器在運(yùn)行期決定,即由容器動(dòng)態(tài)地將某種依賴關(guān)系注入到組件之中。

  (2)在Spring的工作方式中,所有的類都會在spring容器中登記,告訴spring這是個(gè)什么東西,你需要什么東西,然后spring會在系統(tǒng)運(yùn)行到適當(dāng)?shù)臅r(shí)候,把你要的東西主動(dòng)給你,同時(shí)也把你交給其他需要你的東西。所有的類的創(chuàng)建、銷毀都由 spring來控制,也就是說控制對象生存周期的不再是引用它的對象,而是spring。對于某個(gè)具體的對象而言,以前是它控制其他對象,現(xiàn)在是所有對象都被spring控制,所以這叫控制反轉(zhuǎn)。

  (3)在系統(tǒng)運(yùn)行中,動(dòng)態(tài)的向某個(gè)對象提供它所需要的其他對象。

  (4)依賴注入的思想是通過反射機(jī)制實(shí)現(xiàn)的,在實(shí)例化一個(gè)類時(shí),它通過反射調(diào)用類中set方法將事先保存在HashMap中的類屬性注入到類中。

   總而言之,在傳統(tǒng)的對象創(chuàng)建方式中,通常由調(diào)用者來創(chuàng)建被調(diào)用者的實(shí)例,而在Spring中創(chuàng)建被調(diào)用者的工作由Spring來完成,然后注入調(diào)用者,即所謂的依賴注入or控制反轉(zhuǎn)。

   注入方式有兩種:依賴注入和設(shè)置注入;

   IoC的優(yōu)點(diǎn):降低了組件之間的耦合,降低了業(yè)務(wù)對象之間替換的復(fù)雜性,使之能夠靈活的管理對象。

AOP(Aspect Oriented Programming):

   (1)AOP面向方面編程基于IoC,是對OOP的有益補(bǔ)充;

  (2)AOP利用一種稱為“橫切”的技術(shù),剖解開封裝的對象內(nèi)部,并將那些影響了多個(gè)類的公共行為封裝到一個(gè)可重用模塊,并將其名為“Aspect”,即方面。所謂“方面”,簡單地說,就是將那些與業(yè)務(wù)無關(guān),卻為業(yè)務(wù)模塊所共同調(diào)用的邏輯或責(zé)任封裝起來,比如日志記錄,便于減少系統(tǒng)的重復(fù)代碼,降低模塊間的耦合度,并有利于未來的可操作性和可維護(hù)性。

  (3)AOP代表的是一個(gè)橫向的關(guān)系,將“對象”比作一個(gè)空心的圓柱體,其中封裝的是對象的屬性和行為;則面向方面編程的方法,就是將這個(gè)圓柱體以切面形式剖開,選擇性的提供業(yè)務(wù)邏輯。而剖開的切面,也就是所謂的“方面”了。然后它又以巧奪天功的妙手將這些剖開的切面復(fù)原,不留痕跡,但完成了效果。

  (4)實(shí)現(xiàn)AOP的技術(shù),主要分為兩大類:一是采用動(dòng)態(tài)代理技術(shù),利用截取消息的方式,對該消息進(jìn)行裝飾,以取代原有對象行為的執(zhí)行;二是采用靜態(tài)織入的方式,引入特定的語法創(chuàng)建“方面”,從而使得編譯器可以在編譯期間織入有關(guān)“方面”的代碼。

  (5)Spring實(shí)現(xiàn)AOP:JDK動(dòng)態(tài)代理和CGLIB代理

     JDK動(dòng)態(tài)代理:其代理對象必須是某個(gè)接口的實(shí)現(xiàn),它是通過在運(yùn)行期間創(chuàng)建一個(gè)接口的實(shí)現(xiàn)類來完成對目標(biāo)對象的代理;其核心的兩個(gè)類是InvocationHandler和Proxy。

     CGLIB代理:實(shí)現(xiàn)原理類似于JDK動(dòng)態(tài)代理,只是它在運(yùn)行期間生成的代理對象是針對目標(biāo)類擴(kuò)展的子類。CGLIB是高效的代碼生成包,底層是依靠ASM(開源的java字節(jié)碼編輯類庫)操作字節(jié)碼實(shí)現(xiàn)的,性能比JDK強(qiáng);需要引入包asm.jar和cglib.jar。

    使用AspectJ注入式切面和@AspectJ注解驅(qū)動(dòng)的切面實(shí)際上底層也是通過動(dòng)態(tài)代理實(shí)現(xiàn)的。

  (6)AOP使用場景:             

        Authentication 權(quán)限檢查

        Caching 緩存

        Context passing 內(nèi)容傳遞

        Error handling 錯(cuò)誤處理

        Lazy loading 延遲加載

        Debugging  調(diào)試

        logging, tracing, profiling and monitoring 日志記錄,跟蹤,優(yōu)化,校準(zhǔn)

        Performance optimization 性能優(yōu)化,效率檢查

        Persistence  持久化

        Resource pooling 資源池

        Synchronization 同步

        Transactions 事務(wù)管理

   另外Filter的實(shí)現(xiàn)和struts2的攔截器的實(shí)現(xiàn)都是AOP思想的體現(xiàn)。

     


總結(jié):

       

 (1)spring有以下的優(yōu)點(diǎn):
     1.降低了組件之間的耦合性 ,實(shí)現(xiàn)了軟件各層之間的解耦 
     2.可以使用容易提供的眾多服務(wù),如事務(wù)管理,消息服務(wù)等 
     3.容器提供單例模式支持 
     4.容器提供了AOP技術(shù),利用它很容易實(shí)現(xiàn)如權(quán)限攔截,運(yùn)行期監(jiān)控等功能 
     5.容器提供了眾多的輔助類,能加快應(yīng)用的開發(fā) 
     6.spring對于主流的應(yīng)用框架提供了集成支持,如hibernate,JPA,Struts等 
     7.spring屬于低侵入式設(shè)計(jì),代碼的污染極低 
     8.獨(dú)立于各種應(yīng)用服務(wù)器 
     9.spring的DI機(jī)制降低了業(yè)務(wù)對象替換的復(fù)雜性 
    10.Spring的高度開放性,并不強(qiáng)制應(yīng)用完全依賴于Spring,開發(fā)者可以自由選擇spring的部分或全部


 (2)AOP可以動(dòng)態(tài)的添加或者刪除在切面上的邏輯而不影響原來代碼的執(zhí)行,體現(xiàn)了源代碼無關(guān)性。

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    狠狠干狠狠操在线播放| 国产欧美日韩不卡在线视频| 日本在线 一区 二区| 午夜精品久久久免费视频| 精品人妻av区波多野结依| 国产传媒中文字幕东京热| 中文文精品字幕一区二区| 中文文精品字幕一区二区| 激情五月综五月综合网| 亚洲在线观看福利视频| 亚洲中文在线观看小视频| 欧美一区二区三区十区| 亚洲精品伦理熟女国产一区二区| 亚洲一区二区三区免费的视频| 亚洲国产成人久久99精品| 国内精品偷拍视频久久| 色婷婷在线精品国自产拍| 精品国产亚洲av成人一区| 日本成人中文字幕一区| 亚洲香艳网久久五月婷婷| 老熟女露脸一二三四区| 欧美一区二区在线日韩| 午夜亚洲少妇福利诱惑| 中文字幕av诱惑一区二区 | 亚洲天堂国产精品久久精品| 深夜日本福利在线观看| 日韩国产欧美中文字幕| 国产高清精品福利私拍| 蜜桃传媒在线正在播放| 日韩国产欧美中文字幕| 91播色在线免费播放| 午夜直播免费福利平台| 日韩精品中文字幕亚洲| 亚洲精品深夜福利视频| 欧美日韩国产综合特黄| 国产成人av在线免播放观看av | 国产又猛又大又长又粗| 亚洲国产成人久久99精品| 91人人妻人人爽人人狠狠| 空之色水之色在线播放| 不卡一区二区高清视频|