Đây là sau ngày từ câu hỏi này:Enable Spring AOP hoặc AspectJ
Spring autowired bean for @Aspect aspect is null
hiểu biết ban đầu của tôi đã được rằng khi sử dụng Spring AOP, các lớp học chú thích với @Aspect được tạo ra như đậu mùa xuân quản lý, vì vậy dependency injection sẽ hoạt động như bình thường. Tuy nhiên có vẻ như một đối tượng với các chú thích @Aspect được tạo ra như một singleton bên ngoài container mùa xuân, vì vậy tôi cần phải cấu hình nó trong XML như vậy để kích hoạt nó như một lò xo được quản lý đậu:
<bean id="aspect" class="com.mysite.aspect" factory-method="aspectOf" />
này bây giờ đã hoàn toàn nhầm lẫn tôi. Tôi nghĩ các cấu hình sau đây sẽ sử dụng lò xo AOP:
<context:component-scan base-package="com.mysite.aspectPackage"/>
<aop:aspectj-autoproxy/>
Vì vậy, nó sẽ quét các chú thích @Aspect sử dụng thành phần quét tạo đậu khía cạnh, và sau đó AutoProxy sẽ tạo ra một beanPostProcessor mà ủy nhiệm tất cả đậu trong bối cảnh của tôi với phù hợp khuyên bảo. Sau đó tôi nghĩ rằng để kích hoạt aspectJ tôi sẽ cần một cấu hình XML hoàn toàn khác nhau (mà tình cờ tôi dường như không thể tìm thấy một ví dụ trong tài liệu). Nó sẽ là cấu hình này sử dụng aspectJ để tạo ra các khía cạnh có thể nằm ngoài vùng chứa của tôi hoặc hoạt động bằng cách thao tác bytecode thay vì proxy.
Note
Đây không phải là một câu hỏi về sự khác biệt giữa AOP mùa xuân và khía cạnh J, đây là cũng có khớp nối ở đây:
Tôi đã thử điều này với mùa xuân 4.3 và chú thích khía cạnh với '@ Aspect'' @ Component' hoạt động hoàn toàn tốt ngay cả với DI, giống như @Bozho đã viết trong câu trả lời của mình – csharpfolk