java - 使用 Spring AOP 获取方法参数?

标签 java spring

我正在使用 Spring AOP 并且有以下方面:

@Aspect
public class LoggingAspect {

    @Before("execution(* com.mkyong.customer.bo.CustomerBo.addCustomer(..))")
    public void logBefore(JoinPoint joinPoint) {

        System.out.println("logBefore() is running!");
        System.out.println("hijacked : " + joinPoint.getSignature().getName());
        System.out.println("******");
    }

}

Above aspect 拦截 addCustomer 方法的执行。 addCustomer 方法将字符串作为输入。 但我需要在 logBefore 方法中记录传递给 addCustomer 方法的输入。
有可能吗?

最佳答案

你有几个选择:

首先,您可以使用 JoinPoint#getArgs()方法返回一个 Object[] 包含建议方法的所有参数。您可能需要根据您想对它们执行的操作进行一些转换。

其次,你可以像这样使用 args 切入点表达式:

// use '..' in the args expression if you have zero or more parameters at that point
@Before("execution(* com.mkyong.customer.bo.CustomerBo.addCustomer(..)) && args(yourString,..)")

那么您的方法可以改为定义为

public void logBefore(JoinPoint joinPoint, String yourString) 

关于java - 使用 Spring AOP 获取方法参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15660535/

相关文章:

java - Apache Tomcat 关机 :java.net.ConnectException:连接被拒绝

java - 写入文本复制以前的数据

java - 如何从 Java 类调用 spring 组件

java - 无法在 Octave 中使用 Java

java - 在java中重用类型参数的值

spring - spring boot 测试中的事务未回滚

java - 模拟Mvc。 VewResolver 工作后检查 url?

java - 在 docker 容器中部署简单的独立 spring mvc 应用程序

java - 我们可以创建一个 Spring ScheduledExecutorTask 池吗?

javascript - 在angulajs中转换java对象中的json时,获取嵌套异常是com.fasterxml.jackson.databind.JsonMappingException