【问题标题】:AspectJ - Get value of annotated method parameterAspectJ - 获取带注释的方法参数的值
【发布时间】:2013-02-10 17:37:51
【问题描述】:

我创建了自定义注释@MyAnn。我会用它来注释方法参数。

例如:public static call(@MyAnn String name){...}

使用 AspectJ,我如何访问和更新所有带有注解的参数的值?

我发现了一些示例代码,展示了如何创建针对自定义注释的切入点,here

所以现在,我用切入点创建了一个切面。 但我不知道如何获取用MyAnn 注释的参数值。

@Aspect
public class MyAnnAspect {

    @Around("execution(@my.package.test.MyAnn") // I hope this pointcut will work
    public void changeParameter(final ProceedingJoinPoint pjp) throws Throwable {
        // How I can there get parameter value (and chage it)? 
    }
}

【问题讨论】:

    标签: java aspectj


    【解决方案1】:

    我认为切入点不起作用,因为它不是被注释的方法,顺便说一句你可以这样做:

    MethodSignature ms = (MethodSignature) pjp.getSignature();
    Method m = ms.getMethod();
    Annotation[][] pa = m.getParameterAnnotations();
    

    现在您可以遍历注解并找到正确的注解,如果存在则通过调用 pjp.getArgs() 获取参数值。

    【讨论】:

    • 如何从 getArgs 中获取字段名称/字段值。 ?它只会给出所有的值。与注解没有关系。
    猜你喜欢
    • 2015-08-15
    • 1970-01-01
    • 2018-03-12
    • 1970-01-01
    • 2012-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多