千家信息网

springboot怎么实现对注解的切面

发表于:2024-12-13 作者:千家信息网编辑
千家信息网最后更新 2024年12月13日,本篇内容介绍了"springboot怎么实现对注解的切面"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成
千家信息网最后更新 2024年12月13日springboot怎么实现对注解的切面

本篇内容介绍了"springboot怎么实现对注解的切面"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

对注解实现切面案例:

(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@Slf4jpublic 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

"springboot怎么实现对注解的切面"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

注解 方法 切面 时间 作用 内容 更多 案例 知识 运行 实用 学有所成 接下来 参数 变量 只是 困境 实际 层面 情况 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 延边导航软件开发 大连软件开发工作怎么样 网站迁移数据库设置 郑州正规软件开发有用吗 如何清除网页所有数据库 企业要建立自己的服务器吗 软件开发和硬件会计处理 web服务器支持线数 东软集团的软件开发怎么样 图书馆自建数据库 黑龙江智慧养老软件开发专业制作 政府科技扶持资金互联网医疗 网络安全法属于专门法规吗 什么是数据库的安全性与完整性 直播公司服务器需要多大的宽带 重庆软件开发培训机构排名 连接数据库下所有表 软件开发操作系统库 财政网络安全工作责任制 数据库在线链接 家长网络安全承诺书 软件开发类的网店名字怎么起 网络安全隐患观后感 厦门下单软件开发设计 万方数据库著作权使用费包含 政府科技扶持资金互联网医疗 大话西游那个服务器大力多 宝塔绑定服务器是空的 网络安全校园600字作文 安卓app数据库
0