AspectJ-получить значение параметра аннотированного метода

Я создал пользовательские аннотации @MyAnn. И я буду аннотировать параметры метода с ним.

например: public static call(@MyAnn String name){...}

используя AspectJ, как я могу получить доступ и обновить значения всех параметров, аннотированных аннотацией?

Я нашел пример кода, показывающий, как создавать pointcuts, ориентированные на пользовательские аннотации,здесь.

Итак, на данный момент я создал аспект с pointcut. Но я не знаю, как получить значение параметра аннотировано с 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)? 
    }
}

1 ответов


Я не думаю, что pointcut работает, потому что это не метод, который аннотируется, кстати, вы можете сделать:

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

теперь вы можете перебирать аннотации и находить правильную аннотацию, если присутствует, получить значение параметра, вызвав pjp.getArgs().