成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

SpringBoot中定位切點的兩種常用方法

瀏覽:88日期:2023-03-05 17:32:01

有時候,我們使用AOP來進行放的增強,編寫切面類的時候,需要定位在哪個方法上試用該切面進行增強,本片文章主要講解兩種在SpringBoot中定位切點的方法,一種是使用execution表達式的方法,一種則是利用自定義注解的方法。

接下來以一個簡單的例子來講解這兩種方法的使用方式。

<==========方法執行前==========>method();<==========方法執行后==========>

execution 表達式

execution表達式的方式主要是在定義切點的時候,通過表達式的方式選取到所需要增強的方法。

execution表達式解讀

execution(<修飾符模式>?<返回類型模式><方法名模式>(<參數模式>)<異常模式>?)

類型 解讀 是否必須 示例 <修飾符模式> 表示所選的修飾符類型 否 public/private/... <返回類型模式> 表示所選的返回值類型 是 void/int/... <方法名模式> 表示所選的包或者方法 是 com.luke.service/com.luke.controller.*/... (<參數模式>) 表示所選方法的參數 是 *(..)/*(String name)/*(int size, ..)/... <異常模式> 表示所選方法的異常類型 否 throws Exception/...

// 匹配指定包中的所有方法execution(* com.luke.service.*(..))// 匹配當前包中的所有public方法execution(public * UserService.*(..))// 匹配指定包中的所有public方法,并且返回值是int類型的方法execution(public int com.luke.service.*(..))// 匹配指定包中的所有public方法,并且第一個參數是String,返回值是int類型的方法execution(public int com.luke.service.*(String name, ..))自定義切面類:

@Aspect@Componentpublic class LogAspect { @Pointcut('execution(* com.luke.springdata.controller.*.*(..))') public void operationLog(){} /** * 這里只定義一個Around的增強做展示 */ @Around('operationLog()') public Object doAround(ProceedingJoinPoint joinPoint) {Object proceed = null;try { System.out.println('方法執行前'); proceed = joinPoint.proceed(); System.out.println('方法執行后');} catch (Throwable throwable) { throwable.printStackTrace();}return proceed; }}

此切點的execution表達式為com.luke.springdata.controller包下的所有方法。使用**@Around**注解表明增強的方法,并且指定切點。

測試用Controller類

@RestController@RequestMapping('/person')public class PersonController { @GetMapping('/test') public void test(){System.out.println('方法執行了'); } }

運行項目,調用該方法,查看結果。

方法執行前方法執行了方法執行后

自定義注解的方法

自定義注解的方式就是在需要增強的方法上面加上自定義的注解即可。

自定義注解類:

@Documented@Target({ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME)public @interface Log{ }

這里自定義了一個注解Log,該注解只能加在方法上。自定義切面類:

@Aspect@Componentpublic class LogAspect { @Pointcut('@annotation(com.luke.springdata.annotation.Log)') public void operationLog(){} /** * 這里只定義一個Around的增強做展示 */ @Around('operationLog()') public Object doAround(ProceedingJoinPoint joinPoint) {Object proceed = null;try { System.out.println('方法執行前'); proceed = joinPoint.proceed(); System.out.println('方法執行后');} catch (Throwable throwable) { throwable.printStackTrace();}return proceed; }}

這里編寫的自定義個切面類,用**@Pointcut注解定義一個切面,并且這次采用@annotation(xxx)**的方式表明如果哪個方法上添加了xxx注解,則就使用該切面做增強。

同時在每個增強的方法上使用該切面,隨后編寫正常的方法增強邏輯即可。

測試用Controller類

@RestController@RequestMapping('/person')public class PersonController { @Log @GetMapping('/test') public void test(){System.out.println('方法執行了'); } }

此時在需要使用切面的方法上加入**@Log**注解,調用該方法,查看效果。

方法執行前方法執行了方法執行后

總結

兩種方式均能實現AOP的功能,在使用上,如果某個包下面的所有方法,都需要這個切面進行增強,那么使用execution表達式的方式更方便。但如果只有部分方法需要,并且分布在不同的類中,則注解的方式更靈活。

到此這篇關于SpringBoot中定位切點的兩種常用方法的文章就介紹到這了,更多相關SpringBoot 定位切點內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Spring
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
在线观看91精品国产入口| 日韩av电影免费观看高清完整版 | 精品视频在线视频| 一区二区三区加勒比av| 亚洲性感激情| 亚洲欧洲精品一区二区三区不卡| 91视频在线观看| 欧美精品一区二区三区蜜臀| 国产美女视频91| 欧美在线视频全部完| 日本欧美一区二区三区乱码| 久久久精彩视频| 午夜免费久久看| 国产精品亚洲欧美| 亚洲午夜三级在线| 在线天堂一区av电影| 亚洲蜜臀av乱码久久精品蜜桃| 韩国亚洲精品| 一色桃子久久精品亚洲| 在线观看欧美亚洲| 亚洲男人的天堂av| 最新日韩在线| 一区二区三区在线免费视频| 日韩亚洲视频在线| 亚洲国产欧美在线| 久久国产精品久久w女人spa| 性做久久久久久免费观看欧美| 欧美中日韩免费视频| 天天综合色天天综合| 日本乱人伦aⅴ精品| 久久精品国产99国产| 51精品秘密在线观看| 粉嫩av一区二区三区粉嫩| 2021久久国产精品不只是精品| 成人h精品动漫一区二区三区| 国产午夜亚洲精品不卡| 国内精品美女在线观看| 亚洲欧美日韩久久| 国产亚洲精品久久久久婷婷瑜伽| 亚洲国产成人91porn| 91黄色免费看| 国产黄色精品网站| 久久天堂av综合合色蜜桃网| 欧美黄色aaaa| 一区二区三区中文字幕精品精品 | 伊人色综合久久天天| 亚洲在线观看| 美女国产一区二区| 日韩一区二区三区免费看| 成人高清免费观看| 亚洲欧洲性图库| 国产精品亚洲产品| 麻豆视频一区二区| 日韩午夜av一区| 91在线视频播放地址| 亚洲免费在线观看视频| 色婷婷综合久久久久中文一区二区 | 日韩欧美综合一区| 欧美日韩在线播放一区二区| 夜夜嗨av一区二区三区中文字幕 | 国产剧情在线观看一区二区| 精品美女在线播放| 精品不卡一区二区三区| 婷婷国产v国产偷v亚洲高清| 91麻豆精品国产91久久久久| 国产精品二区影院| 日本亚洲电影天堂| 欧美va亚洲va| 亚洲欧洲日本一区二区三区| 美女www一区二区| 亚洲精品在线网站| 亚洲精品国产系列| 美女脱光内衣内裤视频久久影院| 日韩写真欧美这视频| 欧美1区视频| 五月激情综合网| 精品国产成人在线影院| 国产精品毛片va一区二区三区| 精品一区中文字幕| 国产精品乱码一区二区三区软件 | 久久久精品tv| 国产伦精品一区二区三区四区免费 | 精品视频一区二区三区免费| 欧美成人69av| 午夜一区二区三区视频| 日韩欧美一级二级| 99国产成+人+综合+亚洲欧美| 久久69国产一区二区蜜臀| 久久久国产综合精品女国产盗摄| 国产精品综合| 成人av影院在线| 亚洲高清免费一级二级三级| 日韩一区二区三免费高清| 日韩一级在线| 粉嫩久久99精品久久久久久夜| 亚洲精品老司机| 欧美成人在线直播| 国产精品一区二区三区观看| 成人午夜精品在线| 香蕉加勒比综合久久| 精品久久久久久久久久久久包黑料 | 色婷婷精品大在线视频| 欧美国产三区| 久久成人精品无人区| 国产精品欧美久久久久一区二区| 欧美怡红院视频| 亚洲高清视频在线观看| 福利一区福利二区| 亚洲成a人片在线不卡一二三区| 久久免费午夜影院| 在线免费观看一区| 狠狠色综合一区二区| 国产xxx精品视频大全| 亚洲国产一区在线观看| 国产人久久人人人人爽| 717成人午夜免费福利电影| 亚洲一卡久久| 国产精品99免费看| 国产成人aaa| 爽好久久久欧美精品| 中文字幕中文字幕一区| 日韩三级电影网址| 日本道免费精品一区二区三区| 精品91在线| 成人国产精品免费观看动漫| 美国十次综合导航| 亚洲欧美另类综合偷拍| 久久久91精品国产一区二区精品| 国产一区二区三区精品视频| 三级欧美韩日大片在线看| 中文字幕一区二区三区四区不卡| 日韩亚洲欧美中文三级| 欧美三级日韩在线| 久久久精品性| 99re热精品| 国产精品xxx在线观看www| 成人av资源下载| 国产一区二区三区四| 日韩高清中文字幕一区| 亚洲最新在线观看| 国产精品国产三级国产三级人妇| 日韩女优毛片在线| 欧美二区三区的天堂| 欧美日韩小视频| 91高清视频免费看| 久久久水蜜桃av免费网站| 国产欧美一区二区色老头| 日韩欧美亚洲国产另类| 天天操天天干天天综合网| 亚洲欧美日韩在线综合| 精品久久人人做人人爰| 91精品国产手机| 亚洲黄色片在线观看| www.欧美.com| 久久激情一区| 中文字幕一区在线| 黄色精品一区| 亚洲黄色av一区| 亚洲无线视频| 国产精品乱码久久久久久| 韩国一区二区三区在线观看| 国产人伦精品一区二区| 国产一区二区三区四区三区四| 洋洋av久久久久久久一区| 美女视频一区免费观看| 日韩理论片中文av| 一区二区三区在线免费播放| 亚洲欧洲色图综合| 国产精品久久久久久久久免费樱桃| 久久久久久久久久久电影| 欧美va亚洲va国产综合| 7777精品伊人久久久大香线蕉的| 欧洲生活片亚洲生活在线观看| 色婷婷国产精品久久包臀| 色系网站成人免费| 欧美视频一区在线观看| 这里只有精品电影| 日韩视频在线永久播放| 日韩精品最新网址| 精品国产a毛片| 久久这里只有精品视频网| 久久先锋资源网| 国产日产欧美一区二区视频| 国产亚洲欧洲997久久综合 | 欧美三级午夜理伦三级中视频| 欧洲日韩一区二区三区| 欧美日韩高清在线播放| 91精品国产手机| 久久久国产一区二区三区四区小说 | 一本到三区不卡视频| 欧美中文字幕一区二区三区| 欧美日韩免费观看一区三区| 91精品国产综合久久精品麻豆| 日韩三级视频中文字幕| 久久夜色精品一区| 中文字幕一区二区不卡| 亚洲午夜影视影院在线观看| 免费高清不卡av| 国产激情91久久精品导航| 91网上在线视频|