springboot實現(xiàn)對注解的切面案例
對注解實現(xiàn)切面案例:
(1)定義一個注解
@Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public @interface MyAnnotation { ? ? String getValues() default "test annotation"; }
@Target(ElementType.METHOD)
表示該注解作用在方法上(type表示類上,field表示成員變量上)
@Retention(RetentionPolicy.RUNTIME)
表示該注解的作用范圍,由于需要在運行時能夠識別到該注解,所以是RUNTIME(SOURCE表示源碼層面上,即編譯成.class時看不見該注解,而CLASS可以,但是在運行時看不到)
(2)編寫對注解的切面
(只是記錄的執(zhí)行時間和打印方法,可以實現(xiàn)其他邏輯)
@Aspect @Component @Slf4j public class MyAspect { ? ? // value也可以寫成value = "(execution(* com.sj..*(..))) && @annotation(zkDistributeLock)" ? ? @Around(value = "@annotation(myAnnotation)", argNames = "proceedingJoinPoint, myAnnotation") ? ? public Object processTest(ProceedingJoinPoint proceedingJoinPoint, MyAnnotation myAnnotation) throws Throwable { ? ? ? ? long beginTime = System.currentTimeMillis(); ? ? ? ? // 獲取方法參數(shù) ? ? ? ? Object[] args = proceedingJoinPoint.getArgs(); ? ? ? ? // 執(zhí)行方法 ? ? ? ? Object res = proceedingJoinPoint.proceed(args); ? ? ? ? long time = System.currentTimeMillis() - beginTime; ? ? ? ? MethodSignature signature = (MethodSignature) proceedingJoinPoint.getSignature(); ? ? ? ? String className = proceedingJoinPoint.getTarget().getClass().getName(); ? ? ? ? String methodName = signature.getName(); ? ? ? ? log.info("注解上的值:{}", myAnnotation.getValues()); ? ? ? ? log.info("執(zhí)行時間:{}", time); ? ? ? ? log.info("執(zhí)行類和方法:{} {}", className, methodName); ? ? ? ? return res; ? ? } }
(3)測試
@GetMapping("/go") @MyAnnotation(getValues = "success") public String test1() { ? ? return "hello world"; }
執(zhí)行結果:
注解上的值:success
執(zhí)行時間:8
執(zhí)行類和方法:com.***.TestController test1
到此這篇關于springboot實現(xiàn)對注解的切面案例的文章就介紹到這了,更多相關springboot實現(xiàn)對注解的切面內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Java使用Spring發(fā)送郵件的實現(xiàn)代碼
本篇文章主要介紹了使用Spring發(fā)送郵件的實現(xiàn)代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-03-03SpringBoot使用Spring Security實現(xiàn)登錄注銷功能
這篇文章主要介紹了SpringBoot使用Spring Security實現(xiàn)登錄注銷功能,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧2020-09-09