黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學(xué)習(xí)攻略 職業(yè)指南 死磕到底的aop面試題

死磕到底的aop面試題

更新時間:2022-12-30 14:30:42 來源:動力節(jié)點(diǎn) 瀏覽1747次

1.什么是SpringAop?

一般稱為面向切面編程,用于將那些與業(yè)務(wù)無關(guān),但卻對多個對象產(chǎn)生影響的公共行為和邏輯,抽取并封裝為一個可重用的模塊,這個模塊被命名為“切面”(Aspect),減少系統(tǒng)中的重復(fù)代碼,降低了模塊間的耦合度,同時提高了系統(tǒng)的可維護(hù)性。

2.AOP的相關(guān)概念

(1)切面(Aspect): 在Spring Aop指定就是“切面類” ,切面類會管理著切點(diǎn)、通知。

(2)連接點(diǎn)(Join point): 連接點(diǎn)是在應(yīng)用執(zhí)行過程中能夠插入切面(Aspect)的一個點(diǎn)。這些點(diǎn)可以是調(diào)用方法時,拋出異常時。它是一個虛擬的概念,例如坐地鐵的時候,每一個站都可以下車,那么這每一個站都是一個接入點(diǎn)。假如一個對象中有多個方法,那么這個每一個方法就是一個連接點(diǎn)。

(3)通知(Advice): 就是需要增加到業(yè)務(wù)方法中的公共代碼, 通知有很多種類型分別可以在需要增加的業(yè)務(wù)方法不同位置進(jìn)行執(zhí)行(前置通知、后置通知、異常通知、返回通知、環(huán)繞通知)

(4)切點(diǎn)(Pointcut): 核心方法, 結(jié)合切點(diǎn)表達(dá)式進(jìn)行實(shí)現(xiàn)

(5)目標(biāo)對象(Target Object): 指定是增強(qiáng)的對象

(6)織入(Weaving) : spring aop用的織入方式:動態(tài)代理。 就是為目標(biāo)對象創(chuàng)建動態(tài)代理的過程就叫織入。

核心原理:觀察所調(diào)用的方法是否符合切入點(diǎn)表達(dá)式,如果符合,則使用代理執(zhí)行增強(qiáng)方法

3.Spring通知有哪些類型

前置通知(Before):在目標(biāo)方法被調(diào)用之前調(diào)用通知功能;

后置通知(After):在目標(biāo)方法完成之后調(diào)用通知,此時不會關(guān)心方法的輸出是什么;

返回通知(After-returning ):在目標(biāo)方法成功執(zhí)行之后調(diào)用通知;

異常通知(After-throwing):在目標(biāo)方法拋出異常后調(diào)用通知;

環(huán)繞通知(Around):通知包裹了被通知的方法,在被通知的方法調(diào)用之前和調(diào)用之后執(zhí)行自定義的行為。

4.JDK動態(tài)代理和CGLIB動態(tài)代理的區(qū)別

JDK動態(tài)代理只提供接口的代理,不支持類的代理

該代理類是實(shí)現(xiàn)了目標(biāo)類接口, 并且代理類會實(shí)現(xiàn)接口所有的方法增強(qiáng)代碼。

調(diào)用時 通過代理類先去調(diào)用處理類進(jìn)行增強(qiáng),再通過反射的方式進(jìn)行調(diào)用目標(biāo)方法。從而實(shí)現(xiàn)AOP

如果代理類沒有實(shí)現(xiàn) 接口,那么Spring AOP會選擇使用CGLIB來動態(tài)代理目標(biāo)類。

CGLIB在運(yùn)行時動態(tài)的生成目標(biāo)類的一個子類。并且會重寫父類所有的方法增強(qiáng)代碼,調(diào)用時先通過代理類進(jìn)行增強(qiáng),再直接調(diào)用父類對應(yīng)的方法進(jìn)行調(diào)用目標(biāo)方法。從而實(shí)現(xiàn)AOP。

5.SpringAop的工作過程

1.Spring 創(chuàng)建IOC容器

先掃掃描包中的所有由@Service 和@Component修飾的類,并為它們創(chuàng)建對象,放在Spring IOC容器中。

2.尋找切面類

Spring在創(chuàng)建完對象后,開始尋找由 @Aspect 修飾的切面類并獲取切面類中的所有方法。

3.尋找切面類的方法中帶有表達(dá)式的部分

接下來,Spring找到所有由合法表達(dá)式修飾的方法

4.查找有相應(yīng)方法的類

隨后,Spring檢查它所掃描到的所有類,并將上一步中找到的方法與所有類進(jìn)行對照,找出有這個(些)方法的類(這個類就是被代理類)。

5.創(chuàng)建動態(tài)對象

最后,Spring根據(jù)上一步找到的被代理類以及切面類創(chuàng)建動態(tài)類的動態(tài)對象并放入Spring IOC容器中。

6.Spring的事務(wù)管理機(jī)制

使用AOP實(shí)現(xiàn)

編程式事務(wù)管理:這意味你通過編程的方式管理事務(wù),給你帶來極大的靈活性,但是難維護(hù)。

聲明式事務(wù)管理:這意味著你可以將業(yè)務(wù)代碼和事務(wù)管理分離,你只需用注解和XML配置來管理事務(wù)。業(yè)務(wù)層的每個方法都是一個事務(wù)(業(yè)務(wù)邏輯層不要捕獲異常)

7.Spring的事務(wù)傳播行為

事務(wù)傳播行為類型 說明
oropagation required 如果當(dāng)前沒有事務(wù),就新建一個事務(wù),如果已經(jīng)存在一個事務(wù)中,加入到這個事務(wù)中。這是最常見的選擇。
propagation supports 支持當(dāng)前事務(wù),如果當(dāng)前沒有事務(wù),就以非事務(wù)方式執(zhí)行
propagation mandatory 使用當(dāng)前的事務(wù),如果當(dāng)前沒有事務(wù),就拋出異常
propagation requires new 新建事務(wù),如果當(dāng)前存在事務(wù),把當(dāng)前事務(wù)掛起.
propagation not supported 以非事務(wù)方式執(zhí)行操作,如果當(dāng)前存在事務(wù),就把當(dāng)前事務(wù)掛起
propagation never 以非事務(wù)方式執(zhí)行,如果當(dāng)前存在事務(wù),則拋出異常。
propagation nested 如果當(dāng)前存在事務(wù),則在嵌套事務(wù)內(nèi)執(zhí)行。如果當(dāng)前沒有事務(wù),則執(zhí)行與REOUIRED類似的操作。

以上就是“死磕到底的aop面試題”,你能回答上來嗎?如果想要了解更多的Java面試題相關(guān)內(nèi)容,可以關(guān)注動力節(jié)點(diǎn)Java官網(wǎng)。

提交申請后,顧問老師會電話與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 国产免费丝袜调教视频 | a级毛片免费观看在线播放 a级毛片免费完整视频 | 国产一区二区三区在线看 | 最新欧美一级视频 | 天天摸天天射 | 水中色av综合 | 色老头在线观看精品 | 韩国在线伦理片 | 成人精品在线 | 欧美三级第一页 | 黄色网址在线免费看 | 黄色免费在线观看视频 | 亚洲欧美日韩中文字幕在线 | 欧美特级特黄a大片免费 | 中文字幕在线日韩 | 中文亚洲动漫精品 | 日韩一级二级 | 日韩三级影院 | 国产成人综合精品一区 | 一级黄色片免费观看 | 免费黄色小视频 | 狠狠躁夜夜躁人人躁婷婷视频 | 亚洲日韩欧美综合 | 成人久久18免费网址 | 羞羞视频在线免费观看 | 青青操国产 | 最近中文字幕视频完整 | 亚洲玖玖| 老司机午夜性大片免费 | 美女视频黄.免费网址 | 日本在线免费播放 | caonila国产在线观看 | 免费一看一级欧美 | 欧洲另类一二三四区 | 亚洲视屏在线观看 | 亚洲成aⅴ人片在线影院八 亚洲成av人片在线观看 | xxxx日日摸夜夜添夜夜添视频 | 日本福利片国产午夜久久 | 中文字幕亚洲图片 | 午夜羞羞视频在线观看 | 操美女在线视频 |