溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Spring之AOP

發(fā)布時間:2020-07-14 04:12:39 來源:網(wǎng)絡(luò) 閱讀:259 作者:yeleven 欄目:開發(fā)技術(shù)

一、什么是AOP

    1.AOP的基本概念

    AOP將應(yīng)用系統(tǒng)分為兩個部分:核心業(yè)務(wù)邏輯以及橫向的通用邏輯。

    也就是所謂的方面。

    例如,所有大中型應(yīng)用都要涉及到的持久化的管理、事務(wù)管理、安全管理、日志管理以及調(diào)試管理等等。

    在Spring當(dāng)中提供了面向切面編程的豐富的支持。允許通過分離應(yīng)用的業(yè)務(wù)邏輯與系統(tǒng)級的服務(wù)進(jìn)行內(nèi)置性的開發(fā)。

    應(yīng)用對象指實(shí)現(xiàn)他們應(yīng)該做的,也就是完成業(yè)務(wù)邏輯,僅此而已。它們并不負(fù)責(zé)甚至意識到其它的系統(tǒng)級別的關(guān)注點(diǎn)。例如日志和事務(wù)支持等等。

    2.AOP與OOP的關(guān)系

    在軟件行業(yè)當(dāng)中,AOP是對OOP的面向?qū)ο缶幊痰囊环N有益的補(bǔ)充,同時AOP也是OOP的延續(xù),是軟件開發(fā)中的一個熱點(diǎn),也是spring框架當(dāng)中一個非常重要的內(nèi)容。OOP是從靜態(tài)角度考慮程序結(jié)構(gòu),即OOP對業(yè)務(wù)處理過程中的實(shí)體以及屬性和行為進(jìn)行了抽象的封裝,以獲得更加清晰、高效果的邏輯劃分,研究的是一種靜態(tài)的領(lǐng)域。而AOP是從動態(tài)角度考慮程序運(yùn)行過程,即針對業(yè)務(wù)處理過程中的切面進(jìn)行提取,它所面對的是處理過程中的某個步驟或者階段,研究的是一種動態(tài)的領(lǐng)域。

    3.AOP的主要功能

    它主要是用于系統(tǒng)級別的功能,例如日志記錄、性能統(tǒng)計(jì)、安全控制、事務(wù)處理、異常處理等等這些主要功能。

    4.AOP的主要意圖

    它主要是將日志記錄、性能統(tǒng)計(jì)、安全控制、事務(wù)處理、異常處理等代碼從業(yè)務(wù)邏輯代碼中劃分出來。通過對這些行為的分離,我們希望可以將他們獨(dú)立到非指導(dǎo)性業(yè)務(wù)邏輯方法當(dāng)中,進(jìn)而改變這一行為的時候不影響業(yè)務(wù)邏輯代碼的處理。也就是說AOP把一些常用的服務(wù)進(jìn)行模塊化,并且用聲明的方式將這些組件使用到其它的業(yè)務(wù)組件當(dāng)中去。這樣做的結(jié)果就是每一個業(yè)務(wù)組件只需要關(guān)心自己的業(yè)務(wù)邏輯,而不用去了解一些常用的服務(wù)組件,這樣就保證了更高的內(nèi)聚性。


二、AOP的存在價(jià)值

    AOP專門用于處理系統(tǒng)中分布于各個模塊中的交叉關(guān)注點(diǎn)的問題,在Java EE應(yīng)用中,常常通過AOP來處理一些具有橫切性質(zhì)的系統(tǒng)級服務(wù),如事務(wù)管理、安全檢查、緩存、對象池管理等,AOP已經(jīng)成為一種非常常用的解決方案。


三、AOP的原理剖析

    AOP代理其實(shí)是由AOP框架動態(tài)生成的一個對象,該對象可作為目標(biāo)對象使用。

     定義普通業(yè)務(wù)組件

    定義切入點(diǎn)

    定義增強(qiáng)處理

    代理對象的方法=增強(qiáng)處理+被代理對象的方法


四、AOP的關(guān)鍵概念

    切面 - Aspect

    連接點(diǎn) - Join Point

    通知 - Advice

    切入點(diǎn) - Point Cut

    引入 - Introduction

    目標(biāo)對象 - Target Object

    AOP代理 - AOP Proxy

    織入 - Weaving

    

五、AOP的通俗理解

    一個組件A,不關(guān)心其他常用的組件B,但是這個組件A使用組件B的時候,不是組件A自身去調(diào)用,而是通過配置等其他方式,比如Spring中可以通過xml配置文件。這樣就使得A壓根就不需要知道服務(wù)組件B是怎樣的,愛存在不存在,愛怎么存在都與A無關(guān)。A只關(guān)心自己的業(yè)務(wù)邏輯,具體A使用B的時候,配置文件去做,與具體的A組件無關(guān)。






向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI