最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java的Spring?AOP詳細(xì)講解

 更新時(shí)間:2022年02月22日 11:16:44   作者:printf("小白");  
章主要為大家詳細(xì)介紹了Java的Spring?AOP,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助

什么是AOP&作用

  • AOP 為 Aspect Oriented Programming 的縮寫(xiě),意思為面向切面編程,是通過(guò)預(yù)編譯方式和運(yùn)行期動(dòng)態(tài)代理實(shí)現(xiàn)程序功能的統(tǒng)一維護(hù)的一種技術(shù)。
  • AOP 是 OOP 的延續(xù),是函數(shù)式編程的一種衍生范型。利用AOP可以對(duì)業(yè)務(wù)邏輯的各個(gè)部分進(jìn)行隔離,從而使得業(yè)務(wù)邏輯各部分之間的耦合度降低,提高程序的可重用性,同時(shí)提高了開(kāi)發(fā)的效率
  • 作用:在程序運(yùn)行期間,在不修改源碼的情況下對(duì)方法進(jìn)行功能增強(qiáng)

AOP的動(dòng)態(tài)代理技術(shù)

  • 常用的動(dòng)態(tài)代理技術(shù)

1.JDK代理,基于接口的動(dòng)態(tài)代理

在這里插入圖片描述

2.cglib代理,基于父類(lèi)的動(dòng)態(tài)代理技術(shù)

在這里插入圖片描述

基于JDK的動(dòng)態(tài)代理

動(dòng)態(tài)代理的實(shí)現(xiàn)

在這里插入圖片描述

單獨(dú)實(shí)現(xiàn)增強(qiáng)方法

在這里插入圖片描述

running方法

在這里插入圖片描述

cglib動(dòng)態(tài)代理

不需要寫(xiě)接口文件其他增強(qiáng)方法,目標(biāo)方法復(fù)制

在這里插入圖片描述

AOP相關(guān)概念

Target(目標(biāo)對(duì)象):代理的目標(biāo)對(duì)象

Proxy (代理):一個(gè)類(lèi)被 AOP 織入增強(qiáng)后,就產(chǎn)生一個(gè)結(jié)果代理類(lèi)

Joinpoint(連接點(diǎn)):所謂連接點(diǎn)是指那些被攔截到的點(diǎn)。在spring中,這些點(diǎn)指的是方法,因?yàn)閟pring只支持方法類(lèi)型的連接點(diǎn)

Pointcut(切入點(diǎn)):所謂切入點(diǎn)是指我們要對(duì)哪些 Joinpoint 進(jìn)行攔截的定義

Advice(通知/ 增強(qiáng)):所謂通知是指攔截到 Joinpoint 之后所要做的事情就是通知

Aspect(切面):是切入點(diǎn)和通知(引介)的結(jié)合

Weaving(織入):是指把增強(qiáng)應(yīng)用到目標(biāo)對(duì)象來(lái)創(chuàng)建新的代理對(duì)象的過(guò)程。spring采用動(dòng)態(tài)代理織入,而AspectJ采用編譯期織入和類(lèi)裝載期織入

AOP開(kāi)發(fā)明確事項(xiàng)

需要編寫(xiě)的內(nèi)容

  • 編寫(xiě)業(yè)務(wù)核心代碼(目標(biāo)方法)
  • 編寫(xiě)切面類(lèi)(增強(qiáng)功能方法)
  • 在配置文件中。配置織入關(guān)系

AOP技術(shù)實(shí)現(xiàn)的內(nèi)容

Spring 框架監(jiān)控切入點(diǎn)方法的執(zhí)行。一旦監(jiān)控到切入點(diǎn)方法被運(yùn)行,使用代理機(jī)制,動(dòng)態(tài)創(chuàng)建目標(biāo)對(duì)象的代理對(duì)象,根據(jù)通知類(lèi)別,在代理對(duì)象的對(duì)應(yīng)位置,將通知對(duì)應(yīng)的功能織入,完成完整的代碼邏輯運(yùn)行。

AOP 底層使用哪種代理方式

在 spring 中,框架會(huì)根據(jù)目標(biāo)類(lèi)是否實(shí)現(xiàn)了接口來(lái)決定采用哪種動(dòng)態(tài)代理的方式(jdk是接口代理 cglib是不需要接口的)

基于XML的AOP開(kāi)發(fā)

導(dǎo)入AOP相關(guān)坐標(biāo)

在這里插入圖片描述

創(chuàng)建目標(biāo)接口和目標(biāo)類(lèi)

在這里插入圖片描述

在這里插入圖片描述

創(chuàng)建切面類(lèi)

在這里插入圖片描述

將目標(biāo)類(lèi)和切面類(lèi)的對(duì)象創(chuàng)建權(quán)交給Spring

在applicationContext.xml中配置織入關(guān)系

在這里插入圖片描述

測(cè)試代碼

在這里插入圖片描述

切面表達(dá)式

  • 表達(dá)式語(yǔ)法

execution([修飾符] 返回值類(lèi)型 包名.類(lèi)名.方法名(參數(shù)))

execution(public void com.itheima.aop.Target.method())

訪問(wèn)修飾符可以省略

execution(void com.itheima.aop.Target.*(..))

包名與類(lèi)名之間一個(gè)點(diǎn) . 代表當(dāng)前包下的類(lèi),兩個(gè)點(diǎn) … 表示當(dāng)前包及其子包下的類(lèi)

execution(* com.itheima.aop.*.*(..))

參數(shù)列表可以使用兩個(gè)點(diǎn) … 表示任意個(gè)數(shù),任意類(lèi)型的參數(shù)列表

execution(* com.itheima.aop..*.*(..))

通知類(lèi)型

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

切點(diǎn)表達(dá)式抽取

在這里插入圖片描述

基于注解的AOP開(kāi)發(fā)

創(chuàng)建目標(biāo)接口和目標(biāo)類(lèi)(內(nèi)部有切點(diǎn))

在這里插入圖片描述

創(chuàng)建切面類(lèi)(內(nèi)部有增強(qiáng)方法)

在這里插入圖片描述

將目標(biāo)類(lèi)和切面類(lèi)的對(duì)象創(chuàng)建權(quán)交給Spring 在切面類(lèi)中使用注解配置織入關(guān)系 在配置文件中開(kāi)啟組件掃描和AOP自動(dòng)代理

在這里插入圖片描述

測(cè)試

在這里插入圖片描述

注解通知類(lèi)型和切面表達(dá)式的抽取

類(lèi)型

在這里插入圖片描述

在這里插入圖片描述

抽取表達(dá)式

在這里插入圖片描述

總結(jié)

本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!  

相關(guān)文章

  • Java classloader和namespace詳細(xì)介紹

    Java classloader和namespace詳細(xì)介紹

    這篇文章主要介紹了Java classloader和namespace詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • Mybatis批量修改的操作代碼

    Mybatis批量修改的操作代碼

    這篇文章主要介紹了Mybatis批量修改的操作代碼,包括整體批量修改的詳細(xì)代碼,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2017-09-09
  • elasticsearch集群發(fā)現(xiàn)zendiscovery的Ping機(jī)制分析

    elasticsearch集群發(fā)現(xiàn)zendiscovery的Ping機(jī)制分析

    這篇文章主要為大家介紹了elasticsearch集群發(fā)現(xiàn)zendiscovery的Ping機(jī)制分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-04-04
  • 詳解Java如何判斷一個(gè)對(duì)象是否為空

    詳解Java如何判斷一個(gè)對(duì)象是否為空

    我們?cè)趧傞_(kāi)始學(xué)習(xí)Java的時(shí)候,遇到過(guò)最多的異常肯定是臭名昭著的空指針異常(NullPointerException),可以說(shuō)它陪伴了我們整個(gè)初學(xué)階段,那么如何優(yōu)雅的判斷一個(gè)對(duì)象是否為空并且減少空指針異常呢,
    2024-01-01
  • SpringMVC攔截器實(shí)現(xiàn)登錄認(rèn)證

    SpringMVC攔截器實(shí)現(xiàn)登錄認(rèn)證

    這篇文章主要介紹了SpringMVC攔截器實(shí)現(xiàn)登錄認(rèn)證的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • java解析Excel文件的方法實(shí)例詳解

    java解析Excel文件的方法實(shí)例詳解

    在日常工作中,我們常常會(huì)進(jìn)行文件讀寫(xiě)操作,除去我們最常用的純文本文件讀寫(xiě),更多時(shí)候我們需要對(duì)Excel中的數(shù)據(jù)進(jìn)行讀取操作,下面這篇文章主要給大家介紹了關(guān)于java解析Excel文件的方法,需要的朋友可以參考下
    2022-06-06
  • 玩轉(zhuǎn)SpringBoot2快速整合攔截器的方法

    玩轉(zhuǎn)SpringBoot2快速整合攔截器的方法

    這篇文章主要介紹了玩轉(zhuǎn)SpringBoot2快速整合攔截器的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • 全面解析Java觀察者模式

    全面解析Java觀察者模式

    這篇文章主要幫助大家全面解析Java觀察者模式,了解java設(shè)計(jì)模式中的觀察者模式,感興趣的小伙伴們可以參考一下
    2016-09-09
  • Springboot單元測(cè)試編寫(xiě)實(shí)踐

    Springboot單元測(cè)試編寫(xiě)實(shí)踐

    在日常的開(kāi)發(fā)過(guò)程中,為了提高代碼的可靠性和健壯性,同時(shí)也是檢測(cè)代碼的質(zhì)量,減少測(cè)試環(huán)節(jié)的問(wèn)題,會(huì)對(duì)完成的業(yè)務(wù)功能代碼編寫(xiě)單元測(cè)試,在本文中,將分享一些單元測(cè)試的實(shí)踐和心得,需要的朋友可以參考下
    2023-11-11
  • springboot編程式事務(wù)TransactionTemplate的使用說(shuō)明

    springboot編程式事務(wù)TransactionTemplate的使用說(shuō)明

    這篇文章主要介紹了springboot編程式事務(wù)TransactionTemplate的使用說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06

最新評(píng)論

卢湾区| 长垣县| 永和县| 铁岭县| 房产| 原阳县| 琼海市| 水富县| 长武县| 安顺市| 方城县| 古交市| 株洲县| 和政县| 徐闻县| 三河市| 安吉县| 保山市| 沙河市| 广水市| 岗巴县| 东乌珠穆沁旗| 科技| 牡丹江市| 扶风县| 芮城县| 吕梁市| 临江市| 邓州市| 宁国市| 黎川县| 安乡县| 通州市| 静乐县| 凭祥市| 定陶县| 勐海县| 渭源县| 涪陵区| 乌审旗| 昭通市|