2013-01-04 34 views
5

Aspect của tôi là như sau:Chúng ta có thể thoát khỏi định nghĩa bean cho khía cạnh sử dụng Spring-AOP

@Aspect 
public class SomeAspect{ 
    //define pointcuts 
    // define Advices pertaining to pointcuts 
} 

My khía cạnh-config file xml:

<?xml ...?> 
    <beans ... 
    xmlns:aop 
    xmlns:context ..> 
     <bean id="someAspect" class="...SomeAspect"/> 
     <aop:aspectj-autoproxy /> 

    </beans> 

này chạy hoàn toàn tốt đẹp

Những gì tôi yêu cầu:

Tôi muốn loại bỏ viết định nghĩa bean cho mỗi Aspect như được hiển thị ở trên trong tệp xml cấu hình của tôi.

tôi thử như sau:

Added @Component trên SomeAspect và trong xml thêm <context-component-scan> với gói tương ứng chứa Aspect tôi hy vọng rằng lớp học của tôi được chọn như là một Bean và như một Aspect. Tuy nhiên, Aspect của tôi không nhận được gì cả.

Mọi con trỏ?

Trả lời

4

Phần tử context:component-scan có phần tử con mà bạn có thể sử dụng để bao gồm các lớp chú thích để sử dụng để quét bằng quét.

Hãy xem phần tử context:include-filter và thuộc tính của nó.

<context:component-scan base-package="my.package.to.scan"> 
    <context:include-filter type="annotation" expression="org.aspectj.lang.annotation.Aspect"/> 
</context:component-scan> 

Tôi nghĩ những gì bạn đã thử sẽ có tác dụng nhưng không thấy chính xác như bạn đã làm, thật khó để nói chắc chắn.

+0

Hoàn hảo! nó chỉ hoạt động nếu bộ lọc bao gồm ... đó là loại đáng ngạc nhiên bởi vì nó nên đã chọn theo mặc định. Cảm ơn @ nicholas.hauschild! – Vikram

Các vấn đề liên quan