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()
.