springboot实现对注解的切面案例

2023-01-21 0 3,498

注解实现切面案例

(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)编写对注解的切面

(只是记录的执行时间和打印方法,可以实现其他逻辑)

@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();
        // 获取方法参数
        Object[] args = proceedingJoinPoint.getArgs();
        // 执行方法
        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("执行时间:{}", time);
        log.info("执行类和方法:{} {}", className, methodName);
        return res;
    }
}

(3)测试

@GetMapping("/go")
@MyAnnotation(getValues = "success")
public String test1() {
    return "hello world";
}

执行结果:

注解上的值:success

执行时间:8

执行类和方法:com.***.TestController test1

:本文采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可, 转载请附上原文出处链接。
1、本站提供的源码不保证资源的完整性以及安全性,不附带任何技术服务!
2、本站提供的模板、软件工具等其他资源,均不包含技术服务,请大家谅解!
3、本站提供的资源仅供下载者参考学习,请勿用于任何商业用途,请24小时内删除!
4、如需商用,请购买正版,由于未及时购买正版发生的侵权行为,与本站无关。
5、本站部分资源存放于百度网盘或其他网盘中,请提前注册好百度网盘账号,下载安装百度网盘客户端或其他网盘客户端进行下载;
6、本站部分资源文件是经压缩后的,请下载后安装解压软件,推荐使用WinRAR和7-Zip解压软件。
7、如果本站提供的资源侵犯到了您的权益,请邮件联系: 442469558@qq.com 进行处理!

猪小侠源码-最新源码下载平台 Java教程 springboot实现对注解的切面案例 http://www.20zxx.cn/463206/xuexijiaocheng/javajc.html

猪小侠源码,优质资源分享网

常见问题
  • 本站所有资源版权均属于原作者所有,均只能用于参考学习,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担
查看详情
  • 最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,建议提前注册好百度网盘账号,使用百度网盘客户端下载
查看详情

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务