AspectJ Pointcut для вызова конструктора - PullRequest
0 голосов
/ 13 сентября 2018

Я пытаюсь написать совет для перехвата вызовов конструкторов класса с моей пользовательской аннотацией:

@MyCustomAnnotation
public class SomeClass {

   public SomeClass(Foo a, Bar b){
      ...
   }

   public SomeClass(Foo a){
      this(a, null);
   }

}

Я вижу пример того, как перехватить вызовы конструктора, в целом:

@Before("execution(*.new(..))")

Как мне обновить его, чтобы оно выполнялось только для классов, помеченных моей @MyCustomAnnotation аннотацией

1 Ответ

0 голосов
/ 04 декабря 2018

Я использую это для вызова метода:

within(@MyCustomAnnotation *)

Итак, результирующий код аспекта будет:

@Before("execution(*.new(..)) && within(@MyCustomAnnotation *)")

В качестве альтернативы попробуйте это:

@Pointcut("execution(@MyCustomAnnotation *.new(..))")

Я имею в виду документацию здесь: https://blog.espenberntsen.net/2010/03/20/aspectj-cheat-sheet/

, и теоретически это должно работать, но мне не повезло.

...