日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring AOP学习笔记

發(fā)布時(shí)間:2023/12/10 javascript 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring AOP学习笔记 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

需明確的幾個(gè)概念:

l???????? 通知(Advice):用于告知系統(tǒng)將有哪些新的行為。

l???????? 切入點(diǎn)(Pointcut):定義了通知應(yīng)該在應(yīng)用到那些連接點(diǎn)。

l???????? 目標(biāo)對(duì)象(Target):被通知的對(duì)象。

l???????? 代理(Proxy):將通知應(yīng)用到目標(biāo)對(duì)象后創(chuàng)建的對(duì)象。

?

Spring有兩種代理創(chuàng)建方式:

1.??? ?如果目標(biāo)對(duì)象實(shí)現(xiàn)了一個(gè)或多個(gè)接口暴露的方法,Spring將使用JDKjava.lang.reflect.Proxy創(chuàng)建代理。這個(gè)類讓Spring動(dòng)態(tài)產(chǎn)生一個(gè)新的類,它實(shí)現(xiàn)了所需的接口,織入了通知,并且代理目標(biāo)的所有請(qǐng)求。(這篇主要介紹這個(gè)方式)

2.??? 如果目標(biāo)對(duì)象沒有實(shí)現(xiàn)任何接口,Spring使用CGLIB庫生成目標(biāo)對(duì)象的子類。在創(chuàng)建這個(gè)子類的時(shí)候,Spring將通知織入,并且將對(duì)目標(biāo)對(duì)象的調(diào)用委托給這個(gè)子類。

?

下面以一個(gè)實(shí)例說明Spring AOP的基本開發(fā)方法:

一.創(chuàng)建通知

Spring連接點(diǎn)模型是建立在方法攔截上,這意味著你編寫的

Spring通知會(huì)在方法調(diào)用周圍的各個(gè)地方織入系統(tǒng)中。

1

TestAopServiceAdvice實(shí)現(xiàn)了接口MethodBeforeAdvice(前置通知),并實(shí)現(xiàn)它的惟一的方法before,這個(gè)類就可以在調(diào)用目標(biāo)對(duì)象前被調(diào)用。同樣的還有AfterReturningAdvice(后置通知)MethodInterceptor(環(huán)繞通知),異常通知(ThrowsAdvice),引入通知等。

在這個(gè)方法中我們輸出了一個(gè)字符串TestAopServiceAdvice,用于驗(yàn)證這個(gè)方法是否在目標(biāo)對(duì)象前調(diào)用了。

注意:我們無法改變before方法中的參數(shù)argstarget中的值,args中存的是原來要傳入目標(biāo)對(duì)象的變量,target即指目標(biāo)對(duì)象。

?

二.配置Spring XML配置文件

要在Spring中實(shí)現(xiàn)AOP,一般情況下需要配置4個(gè)bean

1.??? 目標(biāo)對(duì)象(target

2.??? 通知(advice)

3.??? 切入點(diǎn)(pointcut)

4.??? 代理(proxy)

2

切入點(diǎn)又分為靜態(tài)切入點(diǎn)和動(dòng)態(tài)切入點(diǎn)

l???????? 靜態(tài)切入點(diǎn)的意思是通知總是被執(zhí)行,也是最常用的一種切入點(diǎn)。

l???????? 動(dòng)態(tài)切入點(diǎn)根據(jù)運(yùn)行時(shí)方法的參數(shù)值決定通知是否被執(zhí)行。

在圖2中,定義了使用了一個(gè)Spring提供的靜態(tài)切入點(diǎn)

NameMatchMethodPointAdvisor,它保證了當(dāng)被調(diào)用的方法的名字與給出的映射名字相匹配的時(shí)候,這個(gè)切入點(diǎn)才匹配。

Spring提供的另一個(gè)靜態(tài)切入點(diǎn)為RegexpMethodPointcutAdvisor,讓你可以利用正則表達(dá)式來定義切入點(diǎn),正則表達(dá)式需要jakarta-oro.jar包的支持。

?

使用ProxyBeanFactory可以創(chuàng)建一個(gè)被通知的類,即代理對(duì)象。它的最常用的三個(gè)控制行為的屬性是:

l???????? proxyInterfaces:代理應(yīng)該實(shí)現(xiàn)的接口列表。

l???????? interceptorNames:需要應(yīng)用到目標(biāo)對(duì)象上的通知Bean的名字。可以是攔截器、Advisor或其他通知類的名字。

注:在用容器的getBean方法時(shí),應(yīng)該是getBean(代理類的名字),而不是getBean(目標(biāo)對(duì)象的名字),否則AOP無法工作。

轉(zhuǎn)載于:https://www.cnblogs.com/springMVC/archive/2007/08/24/2204671.html

總結(jié)

以上是生活随笔為你收集整理的Spring AOP学习笔记的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。