Из этого вопроса следует следующее:
Spring autwired bean для аспекта @Aspect является нулевым
Мое первоначальное понимание заключалось в том, что при использовании Spring AOP классы, аннотированные с @Aspect, создаются как Spring beans, поэтому инъекция зависимостей будет работать как обычно. Однако кажется, что объект с аннотацией @Aspect создается как одиночный элемент вне контейнера Spring, поэтому мне нужно настроить его в XML так, чтобы он был включен как Spring bean:
<bean id="aspect" class="com.mysite.aspect" factory-method="aspectOf" />
Теперь это меня полностью смутило. Я думал, что следующая конфигурация будет использовать Spring AOP:
<context:component-scan base-package="com.mysite.aspectPackage"/>
<aop:aspectj-autoproxy/>
Таким образом, он будет сканировать аннотации @Aspect, используя аспект создания компонента-сканирования beans, а затем autoproxy создаст beanPostProcessor, который проксирует все beans в моем контексте с помощью соответствующего совета. Я тогда подумал, чтобы включить aspectJ. Мне понадобится совершенно другая конфигурация XML (что, кстати, я не могу найти пример в документации). Именно эта конфигурация использует aspectJ для создания аспектов, которые будут за пределами моего контейнера или которые работают, манипулируя байт-кодом, а не проксированием.
Примечание
Это не вопрос разницы между Spring АОП и аспектом J, это хорошо сформулировано здесь: