Questo è sulla scia a questa domanda:Abilita Spring AOP o AspectJ
Spring autowired bean for @Aspect aspect is null
mia comprensione iniziale era che quando si usa Spring AOP, classi annotate con @Aspect vengono creati i fagioli di primavera gestito, in modo da iniezione di dipendenza funzionerebbe normalmente Tuttavia sembra che un oggetto con l'annotazione @Aspect viene creata come Singleton di fuori del contenitore primaverile, quindi me dover configurarlo in XML in questo modo al fine di consentire come una molla bean gestito:
<bean id="aspect" class="com.mysite.aspect" factory-method="aspectOf" />
Questo ora mi ha completamente confuso. Ho pensato che la seguente configurazione userebbe primavera AOP:
<context:component-scan base-package="com.mysite.aspectPackage"/>
<aop:aspectj-autoproxy/>
quindi sarebbe la scansione per le annotazioni @Aspect utilizzando componente-scan creazione di fagioli aspetto, e quindi proxy automatico creerebbe una beanPostProcessor i proxy tutti i fagioli nel mio contesto con l'appropriato consigli. Ho quindi pensato di abilitare aspectJ Avrei bisogno di una configurazione XML completamente diversa (che per inciso non riesco a trovare un esempio nella documentazione). Sarebbe questa configurazione che usa aspectJ per creare aspetti che sarebbero al di fuori del mio contenitore o che funzionano manipolando bytecode piuttosto che proxy.
Nota
Questa non è una domanda sulla differenza tra la primavera AOP e l'aspetto J, questo è ben articolato qui:
Ho provato questo con spring 4.3 e l'annotazione dell'aspetto con '@ Aspect'' @ Component' funziona perfettamente anche con DI, proprio come @Bozho ha scritto nella sua risposta – csharpfolk