Включить Spring AOP или AspectJ

Это следует из этого вопроса:

Spring autowired bean-компонент для аспекта @Aspect имеет значение null

Мое первоначальное понимание заключалось в том, что при использовании Spring AOP классы, аннотированные с помощью @Aspect, создаются как Spring управляемые bean-компоненты, поэтому внедрение зависимостей будет работать как обычно. Однако кажется, что объект с аннотацией @Aspect создается как синглтон вне контейнера Spring, поэтому мне приходится настраивать его в XML таким образом, чтобы включить его в качестве управляемого bean-компонента Spring:


Теперь это полностью запутало меня. Я думал, что следующая конфигурация будет использовать Spring AOP:



Таким образом, он будет сканировать аннотации @Aspect, используя сканирование компонентов, создавая bean-компоненты, а затем autoproxy создаст beanPostProcessor, который проксирует все bean-компоненты в моем контексте с соответствующими советами. Затем я подумал, что для включения аспекта J мне понадобится совершенно другая конфигурация XML (кстати, я не могу найти пример в документации). Это будет конфигурация, в которой аспект будет использоваться для создания аспектов, которые будут находиться за пределами моего контейнера или которые будут работать, манипулируя байт-кодом, а не проксируя.

Примечание
Это не вопрос о разнице между Spring AOP и аспектом J, это хорошо сформулировано здесь:

Spring AOP против AspectJ

10
задан hackjutsu 6 June 2017 в 08:17
поделиться