Как написать Get() pointcut, чтобы получить атрибуты, которые использовались в программе в AspectJ
Я написал следующий pointcut, но он дает ошибку времени выполнения (Исключение в потоке "main" java.lang.StackruError)
pointcut traceAttribs ():(get (* *));
1 ответ
Решение
Из вашего вопроса я понимаю, что вам нужно создать аспект, который знает аргумент ваших методов в режиме реального времени.
На странице Mkyong есть полезные простые примеры , и, вероятно, ваша цель - пункт 8.
Если вы хотите получить имя метода и аргументы в своем аспекте, вы можете написать что-то вроде этого:
@Aspect
public class LoggingAspect {
@Around("execution(* com.your.package.YourClass.yourMethodAround(..))")
public void logAround(ProceedingJoinPoint joinPoint) throws Throwable {
System.out.println("Your method: " + joinPoint.getSignature().getName());
System.out.println("and method arguments: " + Arrays.toString(joinPoint.getArgs()));
System.out.println("Your method will be executed. ");
joinPoint.proceed(); //continue on the intercepted method
System.out.println("Ended execution");
}
}
Надеюсь помочь