2012-05-04 25 views
33

Tôi đang cố gắng thiết lập Spring AOP mà không cần bất kỳ XML nào. Tôi muốn bật <aop:aspectj-autoproxy> trong một lớp học là được chú thích với @Configuration.Cách bật <aop: aspectj-autoproxy> với chú thích dựa trên java

Đây là cách nó sẽ được định nghĩa trong một file XML:

<aop:aspectj-autoproxy> 
<aop:include name="msgHandlingAspect" /> 
</aop:aspectj-autoproxy> 

tôi cố gắng chú thích lớp học của tôi với @Configuration@EnableAspectJAutoProxy nhưng chuyện gì xảy ra.

+0

http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/context/annotation/EnableAspectJAutoProxy.html – firstpostcommenter

Trả lời

42

Bạn đã tạo một bean khía cạnh trong cùng một lớp @Configuration? Dưới đây là gợi ý the docs gì:

@Configuration 
@EnableAspectJAutoProxy 
public class AppConfig { 
    @Bean 
    public FooService fooService() { 
     return new FooService(); 
    } 

    @Bean // the Aspect itself must also be a Bean 
    public MyAspect myAspect() { 
     return new MyAspect(); 
    } 
} 
+1

Vâng, tôi tạo ra một khía cạnh bean trong cùng lớp @Configuration như trong ví dụ của bạn. Nhưng vẫn không có gì xảy ra. Bây giờ tôi đã nhập trong tệp xml bổ sung và thêm thông qua ImportResource vào lớp Cấu hình của tôi. Bây giờ Aspect hoạt động. Nhưng cách tốt hơn là có cấu hình trong cùng một lớp Cấu hình – user1374907

+0

Chính xác những gì tôi đang tìm kiếm. Ngay cả tên lớp cũng giống với tôi: D –

+0

Tôi không khai báo @Bean cho Aspect của mình, nhưng lời khuyên hoạt động, tại sao? – Jaskey