исполнение Vs. точка соединения

У меня есть два разных аспектных класса для подсчета количества вызовов нестатических методов для выполнения тестовой программы. Первый аспект рассчитывает на методывызов" точки соединения:

pointcut methodCalls() : call (!static * test..*(..));
before(): methodCalls() {
        counter.methodCallCounter();
}

в то время как второй аспект рассчитывает на методыисполнение» точки соединения:

pointcut methodCalls() : execution (!static * test..*(..));
before(): methodCalls() {
        counter.methodCallCounter();
}

methodCallCounter () - статический метод в классе счетчика.

Количество вызовов метода для небольшой тестовой программы одинаково. Но когда я заменяю тестовую программу более крупной программой, количество вызовов методов во втором классе аспектов (с pointcut выполнения) больше, чем количество вызовов методов в классе аспектов с помощью pointcut call. Это разумно, поскольку точка соединения вызова не отбирает вызовы, сделанные с помощью super, и, следовательно, не учитывает их.

Однако я столкнулся со случаем, когда для конкретного выполнения программы число нестатических вызовов метода в классе аспекта с помощью "вызов pointcut " было больше, чем количество вызовов методов в классе аспектов с "выполнение pointcut ", Я не могу найти никакой интерпретации, почему это происходит. Любая мысль о причине второй ситуации приветствуется.

Ответы на вопрос(1)

Ваш ответ на вопрос