美文网首页
spring aop切面如何获取方法的参数

spring aop切面如何获取方法的参数

作者: 饱饱想要的灵感 | 来源:发表于2023-11-16 17:15 被阅读0次

方法一: 使用JoinPoint

可以使用JoinPoint来获取方法的参数。JoinPoint是AOP(Aspect-Oriented Programming,面向切面编程)的核心概念,它代表了程序的某个特定的“点”,例如方法的调用或特定的异常被抛出。

以下是如何在切面中获取方法参数的示例:

@Aspect
public class MyAspect {

    @Before("execution(* com.example.MyClass.myMethod(..))")
    public void before(JoinPoint joinPoint) {
        Object[] args = joinPoint.getArgs();
        for (Object arg : args) {
            System.out.println("参数为: " + arg);
        }
    }
}

在这个例子中,我们定义了一个切面(MyAspect)和一个前置通知(before advice),该前置通知会在myMethod方法执行之前运行。我们使用JoinPoint的getArgs方法来获取方法的参数,然后遍历并打印出这些参数。

注意,execution是一个切入点表达式,它定义了切面应该在何处应用。在这个例子中,它指的是com.example.MyClass的myMethod方法。

方法二: 使用 args 表达式

除了使用 JoinPoint 获取方法参数外,还可以使用 @Before 注解中的 args 表达式来直接获取特定类型的参数。下面的例子展示了如何获取 myMethod 方法的 String 类型参数:

@Aspect
public class MyAspect {

    @Before("execution(* com.example.MyClass.myMethod(*)) && args(myArg)")
    public void before(String myArg) {
        System.out.println("参数为: " + myArg);
    }
}

在这个例子中,args 表达式匹配了 myMethod 方法的 String 类型参数,并将其作为 before 方法的参数。这样,我们就可以直接在 before 方法中使用这个参数了。

需要注意的是,args 表达式只能匹配具体的类型,不能匹配所有类型的参数。如果 myMethod 方法有多个参数,则需要使用 JoinPointgetArgs 方法获取参数。

相关文章

  • 04 AOP学习之通知参数

    Spring AOP通知参数 前边章节已经介绍了声明通知,但如果想获取被被通知方法参数并传递给通知方法,该如何实现...

  • 代理详解

    最近在回顾spring aop;想想这个aop很简单,无非就是一个面向切面编程.spring aop只支持对方法的...

  • JDK动态代理和CGLib动态代理笔记

    Spring AOP AOP(Aspect Oriented Programming)面向切面编程,Spring ...

  • Spring Operation

    Spring框架核心点: 依赖注入控制反转(IOC/DI),。 面向切面AOP。 事务处理。 怎么获取Spring...

  • Spring各个包功能详解

    org.springframework.aop ——Spring的面向切面编程,提供AOP(面向切面编程)的实现 ...

  • AOP/Spring AOP/Filter/拦截器 释义

    AOP AOP,面向切面编程,是一种编程思想。 Java中常见的AOP技术 Spring AOP Spring A...

  • Spring_13_Spring框架的AOP

    Spring 框架的 AOP Spring框架的一个关键组件是面向切面编程(AOP)框架,面向切面的编程需要把程序...

  • Spring之AOP面向切面编程

    十、AOP面向切面编程 目录:什么是AOP、AOP在Spring中的作用、Spring实现AOP 1.什么是AOP...

  • spring AOP总结

    AOP术语解释 Advice (通知)切面的使用时机,spring aop有5种时机before(方法调用前)af...

  • AOP实现登陆检测

    为何想到AOP AOP 项目完整代码 如何接入 AspectJ 具体实现 自定义切点 切面 使用如何 获取切点中的...

网友评论

      本文标题:spring aop切面如何获取方法的参数

      本文链接:https://www.haomeiwen.com/subject/sbxywdtx.html