摘要:目錄一的攔截三種方式二切片的演示示例項(xiàng)目三切片特點(diǎn)四過濾器攔截器切面起作用的順序五當(dāng)控制層即層的方法拋異常時(shí),過濾器攔截器切面拋異常的順序一的攔截三種方式過濾器攔截器切片二切片的演示示例項(xiàng)目自定義一個(gè)名稱為的切片,代碼
1、自定義一個(gè)名稱為TimeAspect的切片,代碼如下:
package com.xz.springsecuritydemo.aspect;import org.aspectj.lang.ProceedingJoinPoint;import org.aspectj.lang.annotation.*;import org.springframework.stereotype.Component;import java.util.Date;@Aspect//聲明切面@Component//注入到容器public class TimeAspect { //什么時(shí)候起作用 使用注解,例如@Before()、 @After()、@AfterThrowing()、@AfterReturning()、@Around() //在哪些方法上啟作用,在注解中使用表達(dá)式 /** * execution 表示執(zhí)行 * 第一個(gè)* 表示任何的返回值 * com.xz.springsecuritydemo.modules.sys.controller.SysQueryController 要攔截的類 * .* 表示SysQueryController類中任何一個(gè)方法 * (..) 表示SysQueryController類中任何一個(gè)方法的任何一個(gè)參數(shù) * ProceedingJoinPoint 參數(shù)表示當(dāng)前攔截方法的信息對(duì)象 */ @Around("execution(* com.xz.springsecuritydemo.modules.sys.controller.SysQueryController.*(..))") public Object handleConrtollerMethod(ProceedingJoinPoint pjp) throws Throwable { System.out.println("time aspect start"); //獲取方法的參數(shù) Object[] args = pjp.getArgs(); for (Object arg:args){ System.out.println("方法的參數(shù):"+arg); } long startTime = new Date().getTime(); Object proceed = pjp.proceed(); System.out.println("aspect 耗時(shí):"+(new Date().getTime()-startTime)); System.out.println("time aspect end"); return proceed; }}
2、自定義一個(gè)控制類,代碼如下:
@RestController//表示此Controller提供RestAPIpublic class SysQueryController { /** * @RequestMapping 映射http請(qǐng)求url到j(luò)ava方法 * @RequestParam 映射請(qǐng)求參數(shù)到j(luò)ava方法的參數(shù) */ @RequestMapping(value = "/user1",method = RequestMethod.GET) public void query1(@RequestParam String username){ System.out.println("query1====="+username); } }
3、測試步驟
啟動(dòng)項(xiàng)目,如下圖:
再用postman測試工具發(fā)送請(qǐng)求,如下圖:
最后查看控制態(tài)輸出信息,如下圖:
time aspect start方法的參數(shù):xzquery1=====xzaspect 耗時(shí):1time aspect end
5、輸出第4步的內(nèi)容表示自定義的切片Aspect攔截器成功。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/119357.html
摘要:四過濾器攔截器切面起作用的順序先是過濾器起作用然后攔截器起作用然后切面起作用最后進(jìn)入方法中五當(dāng)控制層即層的方法拋異常時(shí),過濾器攔截器切面拋異常的順序先是切面如果使用自定義異常再進(jìn)入這個(gè)處理異常類然后攔截器然后過濾器如果都沒處理,最后到 ...
摘要:攔截服務(wù)一使用第三方過濾器直接加入項(xiàng)目攔截服務(wù)二使用自定義攔截器攔截服務(wù)三使用切片完結(jié) Spring攔截服務(wù)【一】(SpringBoot使用第三方過濾器Filter直接加入項(xiàng)目) Spring攔截服務(wù)【二】(SpringBoot使用自定義攔截器Interceptor) Spring攔截服務(wù)【三】(SpringBoot使用切片Aspect)【完結(jié)】
摘要:像一樣利用注解自定義切片在中,利用注解可以很輕松的利用技術(shù)進(jìn)行事物管理。表明該注解在運(yùn)行時(shí)也是有效的。其中用來聲明切片的實(shí)現(xiàn)。在這個(gè)代碼里面,最關(guān)鍵的一步是這個(gè)聲明與普通的注解式聲明切片類似,只是其中表明該切片作用范圍為聲明的注解作用范圍。 像@Transactional一樣利用注解自定義aop切片 在spring中,利用@Transactional注解可以很輕松的利用aop技術(shù)進(jìn)行事...
摘要:思考之所以會(huì)選擇為切入點(diǎn),是因?yàn)橥ㄟ^命名可以看出這是用來構(gòu)建代理強(qiáng)化對(duì)象的地方,并且由于是先將目標(biāo)類加載到內(nèi)存中,之后通過修改字節(jié)碼生成目標(biāo)類的子類,因此我猜測強(qiáng)化是在目標(biāo)類實(shí)例化后觸發(fā)的時(shí)候進(jìn)行的。 【干貨點(diǎn)】 此處是【好好面試】系列文的第11篇文章??赐暝撈恼?,你就可以了解Spring中Aop的相關(guān)使用和原理,并且能夠輕松解答Aop相關(guān)的面試問題。更重要的是,很多人其實(shí)一看源碼就...
摘要:又是什么其實(shí)就是一種實(shí)現(xiàn)動(dòng)態(tài)代理的技術(shù),利用了開源包,先將代理對(duì)象類的文件加載進(jìn)來,之后通過修改其字節(jié)碼并且生成子類。 在實(shí)際研發(fā)中,Spring是我們經(jīng)常會(huì)使用的框架,畢竟它們太火了,也因此Spring相關(guān)的知識(shí)點(diǎn)也是面試必問點(diǎn),今天我們就大話Aop。特地在周末推文,因?yàn)樵撈恼麻喿x起來還是比較輕松詼諧的,當(dāng)然了,更主要的是周末的我也在充電學(xué)習(xí),希望有追求的朋友們也盡量不要放過周末時(shí)...
閱讀 1081·2021-09-26 09:55
閱讀 3662·2021-09-24 10:30
閱讀 1448·2021-09-08 09:36
閱讀 2634·2021-09-07 09:58
閱讀 670·2019-08-30 15:56
閱讀 852·2019-08-29 18:32
閱讀 3763·2019-08-29 15:13
閱讀 1905·2019-08-29 13:49