在注释aspectJ中按值修改方法的参数

时间:2017-10-20 12:17:29

标签: java aspectj

我开始学习aspectJ,我想知道是否可以在文件.aj中创建方面而不是.java中的注释,这是我的例子:

我有这方面修改方法

中参数的值
@Around("execution(* *(..)) && @annotation(Te)")
public Object setupParam(ProceedingJoinPoint pjp) throws Throwable {
    Object[] args = pjp.getArgs();
    MethodSignature signature = (MethodSignature) pjp.getSignature();
    Method method = signature.getMethod();
    Te myAnnotation = method.getAnnotation(Te.class);
    if (args != null) 
        args[0] = (int) args[0] * myAnnotation.w();
    return pjp.proceed(args);
}

我不知道如何在.aj文件中创建这个问题,它甚至可能吗?

1 个答案:

答案 0 :(得分:2)

是的,这是可能的。

public aspect MyAspect {

    public MyAspect() {
      System.out.println("Aspect instance created");
    }

   pointcut myPointcut(ParameterType parameter)
               : ("execution(* *(..)) && @annotation(Te));

    Object around(ParameterType parameter) : myPointcut(parameter) {
       // Business logic here
       // 'thisJoinPointStaticPart' will give you access to join point
       // 'this' will give you access to advice instance itself
       // `return proceed();` will allow you to execute advised join point
    }
}

我建议使用Eclipse AspectJ Developer Tool,它提供许多有用的功能,如智能自动完成,javadoc和方面可视化等。这可能会帮助您更快地学习。