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