Spring AOP: поведение при расширении классов - PullRequest
0 голосов
/ 30 октября 2018

У меня есть аннотация, которая будет использоваться для расширенных классов заполнителей. По сути, наш сервис будет иметь реализацию, и у нас будет явное расширение, которое будет аннотировано. Я не уверен, в чем проблема, но @within не вызывает код, тогда как @target - это.

Вот пример кода - https://github.com/sahil-ag/Spring-AOP-Sample

@Component
public BaseClass { public void getData() {return "";}}

@SampleAnnotation
@Component
public DerivedClass extends BaseClass {}

Здесь, если мы теперь используем @within(SampleAnnotation) pointcut, мы не сможем перехватить getData() при вызове из бина производного класса.

1 Ответ

0 голосов
/ 22 ноября 2018

Аннотация @within используется, когда вы хотите определить класс, в котором расположены контрольные точки. Поэтому убедитесь, что ваше предложение внутри выглядит следующим образом:

@within(@MyAnnotation *)

'*' используется для обозначения любого класса. Это та часть, которую вам не хватает в вашем примере.

Другой подход заключается в использовании @annotation pointcut:

@Annotation(@MyAnnotation)

Официальная документация:

https://www.eclipse.org/aspectj/doc/next/adk15notebook/annotations-pointcuts-and-advice.html

...