我的Blog我做主^_^

          走向一條通往JAVA的不歸路...

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            64 隨筆 :: 68 文章 :: 77 評論 :: 0 Trackbacks

          AOP是很多直覺難以理解的術語的根源。幸運的是,你只要理解三個概念,就可以編寫AOP模塊。這三個概念是:advice,pointcut和 advisor。advice是你想向別的程序內部不同的地方注入的代碼。pointcut定義了需要注入advice的位置,通常是某個特定的類的一個 public方法。advisor是pointcut和advice的裝配器,是將advice注入主程序中預定義位置的代碼。

          關注點(Concern):
                   關注點也就是我們要考察或解決的問題.
                   核心關注點:是指一個系統中的核心功能,也就是一個系統中跟特定業務需求聯系最緊密的商業邏輯.   
                   橫切關注點<交叉關注點>:分散在每個模塊中解決同一樣的問題的關注點.

          切面(Aspect):
                 切面是關注點的模塊化,關注點可能橫切多個對象。它除了包括屬性、方法以外,同時還包括切入點Pointcut、增強Advice等,另外,切面中還可以給一個現存的類添加屬性、構造函數,指定一個類實現某一個接口、繼承某一個類等。

          連接點(Join point):
                   連接點也就是運用程序執行過程中需要插入切面模塊的某一點.連接點主要強調的是一個具體的"點"概念.這個點可以是一個方法、一個屬性、構造函數、類靜態初始化塊,甚至一條語句。

          切入點(Pointcuts):
                   切入點指一個或多個連接點,可以理解成一個點的集合。

          切面:
                 關注點的模塊化,關注點可能橫切多個對象.

          增強或通知(Advice):
                   增強(Advice)里面定義了切面中的實際邏輯(即實現),比如日志的寫入的實際代碼,或是安全檢查的實際代碼。或者說:增強(Advice)是指在定義好的切入點處,所要執行的程序代碼。
                    一般情況下增強(通知)主要有前增強、后增強、環繞增強三種基本類型。
                    前增強(Before advice):是指在連接點之前,先執行增強中的代碼 。
                    后增強(After advice):是指在連接點執行后,再執行增強中的代碼。后增強一般分為連接點正常返回增強及連接點異常返回增強等類型。
                    環繞增強(Around advice):是一種功能強大的增強,可以自由改變程序的流程,連接點返回值等。在環繞增強中出除了可以自由添加需要的橫切功能以外,還需要負責主動調用連接點(通過proceed)來執行激活連接點的程序。

          引介(Introduction):
                   引介是指給一個現有的類添加方法或字段屬性,引介還可以在不改變現有類代碼的情況下,讓現有的Java類實現新的接口,或者為其指定一個父類從而實現多重繼承。相對于增強(Advice)可以動態改變程序的功能或流程來說,引介(Introduction)則用來改變一個類的靜態結構。

          織入(Weaving):
                   織入是指把解決橫切問題的切面模板,與系統中的其它核心模塊通過一定策略或規則組合到一起的過程。在Java領域,主要包括以下三種織入方式:
                    1、運行時織入:即在JAVA運行的過程中,使用JAVA提供代理來實現織入。根據代理產生方式的不同,運行時織入又可以進一步分為2SE動態代理及動態字節碼生成兩種方式。由于J2SE動態代理只能代理接口,因此,需要借助于一些動態字節碼生成器來實現對類的動態代理。大多數AOP實現都是采用這種運行時織入的方式。
                    2、類加載器織入:指通過自定義的類加載器,在虛擬機JVM加載字節碼的時候進行織入。
                    3、編譯器織入:使用專門的編譯器來編譯包括切面模塊在內的整個應用程序,在編譯的過程中實現織入,這種織入是功能最強大的。

          攔截器(Interceptor):
                    攔截器是用來實現對連接點進行攔截,從而在連接點前或后加入自定義的切面模塊功能。

          目標對象(Target object):
                   指在基于攔載器機制實現的AOP框架中,位于攔截器鏈上最未端的對象實例。一般情況下,攔截器未端都包含一個目標對象,通常也就實際業務對象。當然,也可以不使用目標對象,直接把多個切面模塊組織到一起,形成一個完整最終應用程序,整個系統完全使用基于AOP編程方法實現,這種情況少見。 

          AOP代理(Proxy):
                   AOP代理是指在基于攔截器機制實現的AOP框架中,實際業務對象的代理對象。這個代理對象一般衩切面模塊引用,AOP的切面邏輯正是插入在代理對象中來執行的。AOP代理的包括J2SE的代理以及其它字節碼生成工具生成的代理兩種類型。

          面向對象編程(OOP)解決問題的重點在于對具體領域模型的抽象,而面向切面編程(AOP)解決問題的關鍵則在于對關注點的抽象。


          Spring-AOP:使用基于代理及攔截器的機制,與Spring IOC容器融入一體的AOP框架.Spring AOP采用運行時    織入方式,使得可以在基于

          Sping框架的應用程序中使用各種聲明式系統級服務.


           



          posted on 2007-04-02 15:27 java_蟈蟈 閱讀(1172) 評論(0)  編輯  收藏 所屬分類: SPRING

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 天长市| 华池县| 故城县| 娱乐| 临海市| 宣恩县| 富平县| 仲巴县| 札达县| 花垣县| 常宁市| 江门市| 海门市| 勃利县| 晴隆县| 黄梅县| 武清区| 萨迦县| 兰溪市| 拉萨市| 汶上县| 前郭尔| 镇赉县| 怀集县| 大厂| 盖州市| 长垣县| 邵阳县| 香港| 丹东市| 怀化市| 仁化县| 昭平县| 龙门县| 惠东县| 垦利县| 丰台区| 拉萨市| 浦北县| 句容市| 敖汉旗|