2014-02-16 45 views
4

我正在用Java中的註釋進行Spring面向方面的編程。我有一個看點LogAOP:@DeclareParents在面向方面編程的介紹中的註釋

@Aspect 
public class LogAOP { 

    @DeclareParents(value="beans.service.*+",  //Line 1 
        defaultImpl= EventImpl.class) 
    public static Event mixin; 

    @Before("com.beans.business.businessService() &&" + 
      "this(abc)") 
    public void usage(Event abc) { 
    abc.increment(); 
    } 

} 

我無法理解「+」號的1號線在@DeclareParents註釋值屬性的意義。 因爲即使我刪除了這個+符號,程序也運行正常。我也在Spring AOP的官方文檔(http://docs.spring.io/spring/docs/2.5.4/reference/aop.html)中搜索過,沒有提到那裏。

回答

4

使用+在類名或接口名稱用於匹配該類或接口以及它的所有子類之後。所以,在這種情況下,切入點表達式:

@DeclareParents(value="beans.service.*+",  //Line 1 
       defaultImpl= EventImpl.class) 
public static Event mixin; 

...將匹配包beans.service定義的任何接口或類,以及那些類和接口的任何子類或實現類。可能需要它,因爲實施類可能不在beans.service包中。就你而言,你沒有看到效果,因爲可能所有的實現類都在同一個包中。嘗試在beans.service包中實現接口,並將實現類放入不同的包中。我想,你會看到不同之處。