这是从这个问题下面就:启用的Spring AOP还是AspectJ
Spring autowired bean for @Aspect aspect is null
我最初的理解是,在使用Spring AOP的时候,用@Aspect注解的类创建为春季管理的bean,所以依赖注入会正常工作。然而,它似乎与@Aspect注解的对象作为Spring容器外的单创建的,因此我不得不配置它在XML像这样以使其弹簧托管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注解,然后自动代理将创建了BeanPostProcessor其代理我的上下文中的所有豆类与适当的咨询。然后我想启用aspectJ我需要一个完全不同的XML配置(顺便说一句,我似乎无法在文档中找到示例)。这种配置使用aspectJ来创建将在我的容器之外或者通过操作字节码而不是代理来工作的方面。
注
这不是Spring AOP和方面Ĵ之间的差异问题,这是很好这里阐述:
我在spring 4.3中试过这个,并且用@ @Aspect' @ Component'注解方面,即使使用DI,它也可以很好地工作,就像@Bozho在他的回答中所写的一样 – csharpfolk 2016-11-27 17:45:53