相关疑难解决方法(0)

使用Spring AOP获取方法参数?

我正在使用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("******");
    }

}
Run Code Online (Sandbox Code Playgroud)

以上方面截获addCustomer方法执行.addCustomermethod将string作为输入.但我需要记录传入addCustomer方法内部的logBefore方法输入.
有可能这样做吗?

java spring

55
推荐指数
5
解决办法
8万
查看次数

AspectJ JoinPoint问题

我目前正在使用JoinPoint捕获在运行时传递给服务方法的参数.虽然JoinPoint帮助我检索参数值,但我发现当传递的参数是数组时,我没有提供任何好的API来检索参数名称,参数类型,单个参数值等.

这是一个例子:

public void doIt(String user, Attribute[] attr, Integer[] i, boolean bool, List<Attribute> list){.....}
Run Code Online (Sandbox Code Playgroud)

对于上面的方法,当我使用JoinPoint.getArgs()时,我看到参数的垃圾值,它是一个数组或集合.如果参数是数组或集合,我如何验证它们是否是其中之一以及如何遍历它们以检索单个值?

有什么建议 ?谢谢

aspectj

9
推荐指数
1
解决办法
9655
查看次数

从ProceedingJoinPoint中检索参数值

在我的请求中,我有一个参数名称"accessToken",如何从ProceedingJoinPoint获取请求参数值?

public Object handleAccessToken(ProceedingJoinPoint joinPoint) throws Throwable { 
    final Signature signature = joinPoint.getStaticPart().getSignature();
    if (signature instanceof MethodSignature) {
        final MethodSignature ms = (MethodSignature) signature;
        String[] params = ms.getParameterNames();
        for (String param : params) {
            System.out.println(param);
            // here how do i get parameter value using param ?
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

通话方式:

public MyResponse saveUser(
    @RequestParam("accessToken") String accessToken,
    @RequestBody final UserDto userDto
) {
    // code 
}
Run Code Online (Sandbox Code Playgroud)

我想在AOP中获取此访问令牌.

提前致谢.

aop spring-aop spring-aspects

9
推荐指数
2
解决办法
2万
查看次数

标签 统计

aop ×1

aspectj ×1

java ×1

spring ×1

spring-aop ×1

spring-aspects ×1