Как написать 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");

   }
}

Надеюсь помочь

Другие вопросы по тегам