免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
面向切面編程(AOP)的理解

在傳統(tǒng)的編寫業(yè)務邏輯處理代碼時,我們通常會習慣性地做幾件事情:日志記錄、事務控制及權(quán)限控制等,然后才是編寫核心的業(yè)務邏輯處理代碼。當代碼編寫完成回頭再看時,不禁發(fā)現(xiàn),揚揚灑灑上百行代碼中,真正用于核心業(yè)務邏輯處理才那么幾行,如圖6-4所示。方法復方法,類復類,就這樣子帶著無可奈何遺憾地度過了多少個春秋。這倒也罷,倘若到了項目的尾聲,突然決定在權(quán)限控制上需要進行大的變動時,成千上萬個方法又得一一"登門拜訪",痛苦"雪上加霜"。

 

如果能把圖6-4中眾多方法中的所有共有代碼全部抽取出來,放置到某個地方集中管理,然后在具體運行時,再由容器動態(tài)織入這些共有代碼的話,最起碼可以解決兩個問題:

Java EE程序員在編寫具體的業(yè)務邏輯處理方法時,只需關(guān)心核心的業(yè)務邏輯處理,既提高了工作效率,又使代碼變更簡潔優(yōu)雅。

在日后的維護中由于業(yè)務邏輯代碼與共有代碼分開存放,而且共有代碼是集中存放的,因此使維護工作變得簡單輕松。

面向切面編程AOP技術(shù)就是為解決這個問題而誕生的,切面就是橫切面,如圖6-5所示,代表的是一個普遍存在的共有功能,例如,日志切面、權(quán)限切面及事務切面等。

 

下面我們以用戶管理業(yè)務邏輯組件UserService的AOP實現(xiàn)過程(見圖6-6)為例,深度剖析一下AOP技術(shù)的實現(xiàn)原理。AOP技術(shù)是建立在Java語言的反射機制與動態(tài)代理機制之上的。業(yè)務邏輯組件在運行過程中,AOP容器會動態(tài)創(chuàng)建一個代理對象供使用者調(diào)用,該代理對象已經(jīng)按Java EE程序員的意圖將切面成功切入到目標方法的連接點上,從而使切面的功能與業(yè)務邏輯的功能同時得以執(zhí)行。從原理上講,調(diào)用者直接調(diào)用的其實是AOP容器動態(tài)生成的代理對象,再由代理對象調(diào)用目標對象完成原始的業(yè)務邏輯處理,而代理對象則已經(jīng)將切面與業(yè)務邏輯方法進行了合成。

 

現(xiàn)將圖6-6中涉及到的一些概念解釋如下。

切面(Aspect):其實就是共有功能的實現(xiàn)。如日志切面、權(quán)限切面、事務切面等。在實際應用中通常是一個存放共有功能實現(xiàn)的普通Java類,之所以能被AOP容器識別成切面,是在配置中指定的。

通知(Advice):是切面的具體實現(xiàn)。以目標方法為參照點,根據(jù)放置的地方不同,可分為前置通知(Before)、后置通知(AfterReturning)、異常通知(AfterThrowing)、最終通知(After)與環(huán)繞通知(Around)5種。在實際應用中通常是切面類中的一個方法,具體屬于哪類通知,同樣是在配置中指定的。

連接點(Joinpoint):就是程序在運行過程中能夠插入切面的地點。例如,方法調(diào)用、異常拋出或字段修改等,但Spring只支持方法級的連接點。

切入點(Pointcut):用于定義通知應該切入到哪些連接點上。不同的通知通常需要切入到不同的連接點上,這種精準的匹配是由切入點的正則表達式來定義的。

目標對象(Target):就是那些即將切入切面的對象,也就是那些被通知的對象。這些對象中已經(jīng)只剩下干干凈凈的核心業(yè)務邏輯代碼了,所有的共有功能代碼等待AOP容器的切入。

代理對象(Proxy):將通知應用到目標對象之后被動態(tài)創(chuàng)建的對象??梢院唵蔚乩斫鉃?,代理對象的功能等于目標對象的核心業(yè)務邏輯功能加上共有功能。代理對象對于使用者而言是透明的,是程序運行過程中的產(chǎn)物。

織入(Weaving):將切面應用到目標對象從而創(chuàng)建一個新的代理對象的過程。這個過程可以發(fā)生在編譯期、類裝載期及運行期,當然不同的發(fā)生點有著不同的前提條件。譬如發(fā)生在編譯期的話,就要求有一個支持這種AOP實現(xiàn)的特殊編譯器;發(fā)生在類裝載期,就要求有一個支持AOP實現(xiàn)的特殊類裝載器;只有發(fā)生在運行期,則可直接通過Java語言的反射機制與動態(tài)代理機制來動態(tài)實現(xiàn)。

本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Spring03——有關(guān)于 Spring AOP 的總結(jié)
Java
細說AOP(面向切面編程)
AOP的術(shù)語
簡單理解AOP(面向切面編程)
76 張圖,剖析 Spring AOP 源碼,小白居然也能看懂!
更多類似文章 >>
生活服務
分享 收藏 導長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服