什么叫做AOP的概述

什么叫做AOP的概述,針對(duì)這個(gè)問題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡(jiǎn)單易行的方法。

在汪清等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì) 網(wǎng)站設(shè)計(jì)制作按需制作網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站設(shè)計(jì),成都營銷網(wǎng)站建設(shè),外貿(mào)網(wǎng)站建設(shè),汪清網(wǎng)站建設(shè)費(fèi)用合理。

在前面的案例中我么需要自己創(chuàng)建ApplicationContext對(duì)象,然后在調(diào)用getBean來獲取需要測(cè)試的Bean

Spring提供了一種更加方便的方式來創(chuàng)建測(cè)試所需的ApplicationContext,并且可以幫助我們把需要測(cè)試的Bean直接注入到測(cè)試類中

AOP概念

在軟件業(yè),AOP為AspectOrientedProgramming的縮寫,翻譯為:面向切面編程,通過預(yù)編譯方式和運(yùn)行期動(dòng)態(tài)代理實(shí)現(xiàn)程序功能的統(tǒng)一維護(hù)的一種技術(shù)。AOP是OOP的延續(xù),是軟件開發(fā)中的一個(gè)熱點(diǎn),也是Spring框架中的一個(gè)重要內(nèi)容,是函數(shù)式編程的一種衍生范型。利用AOP可以對(duì)業(yè)務(wù)邏輯的各個(gè)部分進(jìn)行隔離,從而使得業(yè)務(wù)邏輯各部分之間的耦合度降低,提高程序的可重用性,同時(shí)提高了開發(fā)的效率。

為什么需要AOP

在項(xiàng)目開發(fā)中我們經(jīng)常遇到一系列通用需求比如:權(quán)限控制,日志輸出,事務(wù)管理,數(shù)據(jù)統(tǒng)計(jì)等,這寫看似簡(jiǎn)單的需求,在實(shí)際開發(fā)中卻會(huì)帶來麻煩。

再看AOP

我們先不考慮如何解決這些問題,其實(shí)AOP之所以出現(xiàn)就是因?yàn)?我們需要對(duì)一些已經(jīng)存在的方法進(jìn)行功能擴(kuò)展,但是又不能通過修改源代碼或改變調(diào)用方式的手段來解決

反過來說就是要在保證不修改源代碼以及調(diào)用方式不變的情況下為原本的方法增加功能

而由于需要擴(kuò)展的方法有很多,于是把這些方法稱作一個(gè)切面,即切面就是一系列需要擴(kuò)展功能的方法的集合

AOP的目的

將日志記錄,性能統(tǒng)計(jì),安全控制,事務(wù)處理,異常處理等重復(fù)代碼從業(yè)務(wù)邏輯代碼中劃分出來,通過對(duì)這些行為的分離,我們希望可以將它們獨(dú)立到非業(yè)務(wù)邏輯的方法中,進(jìn)而改變這些行為的時(shí)候不會(huì)影響業(yè)務(wù)邏輯的代碼。

直接看名字的確是比較抽象的,沒辦法,當(dāng)你創(chuàng)造了一個(gè)全新的東西時(shí),你往往也會(huì)想給它取一個(gè)nb的名字,而這個(gè)解決方案是針對(duì)一些固定場(chǎng)景的,我們很難找到一個(gè)非常準(zhǔn)確的名字去描述這個(gè)方案

AOP的相關(guān)術(shù)語

AOP這一概念是AOP聯(lián)盟aopalliance提出的,相關(guān)的概念也出自aopalliance定義

連接點(diǎn)(joinpoint)

是擴(kuò)展內(nèi)容與原有內(nèi)容的交互的點(diǎn),可以理解為可以被擴(kuò)展的地方,通常是一個(gè)方法,而AspectJ中也支持屬性作為連接點(diǎn)

示例:案例中的三個(gè)方法

切點(diǎn)(pointcut)

切點(diǎn)指的是要被擴(kuò)展(增加了功能)的內(nèi)容,包括方法或?qū)傩?joinpoint)

示例:案例中的兩個(gè)增加了功能的方法

通知(adivce)

通知指的是要在切點(diǎn)上增加的功能

按照?qǐng)?zhí)行時(shí)機(jī)不同分為:

前置,后置,異常,最終,環(huán)繞,引介

引介通知指的是在不修改類代碼的前提下,為類增加方法或?qū)傩?了解即可非重點(diǎn))

示例:上述案例中的輸出執(zhí)行時(shí)間功能

目標(biāo)(target)

目標(biāo)就是要應(yīng)用通知的對(duì)象,即要被增強(qiáng)的對(duì)象

示例:上述案例中的userDao

織入(weaving)

織入是一個(gè)動(dòng)詞,描述的是將擴(kuò)展功能應(yīng)用到target的這個(gè)過程

示例:案例中修改源代碼的過程

代理(proxy)

Spring是使用代理來完成AOP,對(duì)某個(gè)對(duì)象增強(qiáng)后就得到一個(gè)代理對(duì)象;

SpringAOP的整個(gè)過程就是對(duì)target應(yīng)用advice最后產(chǎn)生proxy,我們最后使用的都是proxy對(duì)象;貍貓換太子,偷梁換柱;

切面(aspect)

是切入點(diǎn)和通知的結(jié)合切面,是一個(gè)抽象概念;一個(gè)切面指的是所有應(yīng)用了同一個(gè)通知的切入點(diǎn)的集合

關(guān)于什么叫做AOP的概述問題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

文章標(biāo)題:什么叫做AOP的概述
文章網(wǎng)址:http://bm7419.com/article34/jjsise.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、網(wǎng)站營銷、電子商務(wù)網(wǎng)站制作、企業(yè)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司