AspectJ путаница с pointcut

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

Например:

Foo() calls Bar() calls object.Method()

также

NotFoo() calls Bar() calls object.Method()

Я только хочу, чтобы pointcut работал внутри Foo()

Я попытался "в пределах кода", но это, кажется, работает только непосредственно.

Спасибо Эрик

1 ответ

Решение

То, что вы хотите, на самом деле требует двух точек соединения:

  1. call метод или конструктор в классе Bar и быть within Класс Foo или, в конце концов, конструктор Foo() с withincode целеуказатель. Рекомендация для этой точки соединения может, например, установить флаг true, когда вызывается из Foo(), и false в противном случае. Эта переменная может быть сохранена в HashMap с потоком в качестве ключа, чтобы избежать проблем параллелизма.
  2. withincode Bar () конструктор или внутри класса Bar и call object.method(). Совет этой точке соединения также должен проверить, установлен ли флаг в значение true. И, наконец, снова установите флаг Foo в false.
Другие вопросы по тегам