freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

通過代碼實(shí)例跟我學(xué)面向方面編程從入門到精通——在項(xiàng)目中實(shí)現(xiàn)springaop的around類型通知advice的應(yīng)用實(shí)例(已修改)

2025-09-22 09:56 本頁面
 

【正文】 楊教授工作室 精心創(chuàng)作的優(yōu)秀程序員 職業(yè)提升必讀系列資料 楊教授工作室,版權(quán)所有,盜版必究 , 1/21 頁 在 項(xiàng)目 中實(shí)現(xiàn) Spring AOP的 Around類型 通知( Advice) 的應(yīng)用實(shí)例 編程實(shí)現(xiàn)的技術(shù) 要點(diǎn) 通常,實(shí)現(xiàn) Around 類型的策略是使用 Interceptor(攔截器)作為 Around 類型的Advice也就是要實(shí)現(xiàn) MethodInterceptor 接口。 由于原始的方法是被開發(fā)者在 攔截器中進(jìn)行調(diào)用,從而可以通過 攔截器 來控制原始類中的方法的真正執(zhí)行過程或者對(duì)其附加功能。 在項(xiàng)目中添加與 Spring AOP 有關(guān)的系統(tǒng)庫 ( 1)添加 Spring 系統(tǒng)中的 包文件 ( 2)再添加如下的系統(tǒng)庫 (在 系 統(tǒng) 中 ) , 并 且 是 后 面 的 接口所在的系統(tǒng)庫。 ( 也 在 系統(tǒng)中) ,用于沒有實(shí)現(xiàn)接口的類代理。 AOP 聯(lián)盟規(guī)范了一套用于規(guī)范 AOP 實(shí)現(xiàn)的底層 API,通過這些統(tǒng)一的底層 API,可以使得各個(gè) AOP 實(shí)現(xiàn)及工具產(chǎn)品之間實(shí)現(xiàn)相互移植。這些 API 主 要以標(biāo)準(zhǔn)接口的形式提供,是AOP 編程思想所要解決的橫切交叉關(guān)注點(diǎn)問題各部件的最高抽象。 Spring 的 AOP 框架中也直接以這些 API 為基礎(chǔ)所構(gòu)建。 由于 Spring 版的 AOP 同樣 實(shí)現(xiàn)了 AOP 聯(lián)盟約定的接口,而 在 版的 Spring 框楊教授工作室 精心創(chuàng)作的優(yōu)秀程序員 職業(yè)提升必讀系列資料 楊教授工作室,版權(quán)所有,盜版必究 , 2/21 頁 架 系統(tǒng)庫中 并 不 提 供 該 接 口 的 源 代 碼 , 可以在 官 方 網(wǎng) 站 : 下載系統(tǒng)庫。 應(yīng)用 可視化方式添加 AOP 系統(tǒng)庫 使用 Interceptor(攔截器) ( 1)使 用 Interceptor 我們希望在方法執(zhí)行前、后進(jìn)行記錄的動(dòng)作,在 AOP 中這需要 Around 類型的 Advice。通常,實(shí)現(xiàn) Around 類型的策略是使用 Interceptor。 ( 2) Interceptor 的具體應(yīng)用 應(yīng)用 Interceptor 的一個(gè)例子是 Servlet 中的 Filter 機(jī)制,在 Filter 機(jī)制下,當(dāng)請(qǐng)求來臨時(shí),會(huì)被 Filter 先攔截并進(jìn)行處理,之后傳給下一個(gè) Filter,可能最后才是真正處理請(qǐng)求的 Servlet。 實(shí)現(xiàn) AOP 時(shí)所使用的 Interceptor 策略與 Filter 類似,所不同的是 Filter 被綁定于Servlet API,并且只適用于 Web 應(yīng)用。 楊教授工作室 精心創(chuàng)作的優(yōu)秀程序員 職業(yè)提升必讀系列資料 楊教授工作室,版權(quán)所有,盜版必究 , 3/21 頁 ( 3) Interceptor 可以是一個(gè)鏈 我們可以將一連串的 Interceptor 設(shè)計(jì)為一個(gè)鏈?zhǔn)浇Y(jié)構(gòu),在 Spring 中,在真正執(zhí)行某個(gè)方法前,會(huì)先插入 Interceptor,每個(gè) Interceptor 會(huì)執(zhí)行自己的處理,然后再執(zhí)行proceed,這將執(zhí)行流程轉(zhuǎn)給下一個(gè) Interceptor,如果沒有下一個(gè) Interceptor 了,就執(zhí)行真正要調(diào)用的方法,方法執(zhí)行過后,再一層一層地返回 Interceptor 鏈?zhǔn)浇Y(jié)構(gòu),最后離開鏈?zhǔn)浇Y(jié)構(gòu)。 ( 4) Spring 在實(shí)現(xiàn) Interceptor 時(shí),是實(shí)現(xiàn) 接口 在本 Project 中添加一個(gè) LogInterceptor 類(實(shí)現(xiàn) Log 的記錄) ( 1)類名稱為 LogInterceptor,包名稱為 ( 2)編程 LogInterceptor 程序 類 要在 Spring 中用作 around 通知, AroundAdvice 類必須實(shí)現(xiàn) MethodInterceptor 接口楊教授工作室 精心創(chuàng)作的優(yōu)秀程序員 職業(yè)提升必讀系列資料 楊教授工作室,版權(quán)所有,盜版必究 , 4/21 頁 并重寫 它的 invoke(..)方法 每當(dāng)截獲到 主功能類中的特定的 方法 被調(diào)用時(shí), 重寫 的invoke(..)方法就會(huì)被 自動(dòng) 調(diào)用。 package 。 import 。 import 。 import 。 import 。 public class LogInterceptor implements MethodInterceptor { private Logger logger = (().getName())。 public LogInterceptor() { } public Object invoke(MethodInvocation methodInvocation) throws Throwable { boolean methodReturnBoolean=false。 Object returnResult =null。 String methodName=().getName()。 (, methodName+ 功 能 方 法 開 始 執(zhí) 行 ... + ())。 try { (500)。 } catch (InterruptedException e) { ()。 } try{ returnResult = ()。 methodReturnBoolean=((Boolean)returnResult).booleanValue()。 try { (500)。 } catch (InterruptedException e) { ()。 } 楊教授工作室 精心創(chuàng)作的優(yōu)秀程序員 職業(yè)提升必讀系列資料 楊教授工作室,版權(quán)所有,盜版必究 , 5/21 頁 } finally{ if(methodReturnBoolean){ (, methodName+功能方法執(zhí)行結(jié)束,并且已經(jīng)成功地執(zhí)行了! + () + \n)。 } else{ (, methodName+方法執(zhí)行結(jié)束,并且執(zhí)行失?。? + () + \n)。 } } return returnResult。 //一定要將目標(biāo)方法的返回結(jié)果繼續(xù)向上返回! } } 對(duì)比應(yīng)用 Spring AOP 中 的攔截器程序和 Java 中的動(dòng)態(tài)代理程序之間的差別, 代碼簡單 ,而且不需要在代碼中人為指定 目標(biāo)類和動(dòng)態(tài)創(chuàng)建代理類的對(duì)象 。 ( 3)所應(yīng)該要 注意 的問題 其中的 invoke()中的 MethodInvocation 參數(shù)包括了下一個(gè) Interceptor 的信息、被執(zhí)行的方法、以及方法所需的參數(shù),其返回值 Ob
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號(hào)-1