這是從這個問題下面就:啓用的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