2011-02-10 27 views
4

我有一個服務層接口,它從基礎接口擴展而來;我想創建一個圍繞我的服務層接口的Pointcut,但是在基本接口中定義的方法之一。如何在接口方法上創建一個從「超級」接口擴展的方面

例如....我有一個方法在我的基礎接口名爲「保存()」,我把它放在我的基礎接口,因爲只是我所有的「孩子」接口將提供「保存」功能。

我想在我的「孩子」界面中的一個上創建PointCut,因爲我的「保存」被調用時。

我創建像切入點以下:

@Pointcut("execution(* com.xyz.someapp.ChildServiceInterface.save(..))") 
public void childServiceSavePointCut(); 

我然後創建周圍像下面上述切入點一個@Around建議:

@Around("childServiceSavePointCut()") 
public void doMyAdvice().... 

其中「ChildServiceInterface」延伸,其具有另一個接口定義了「save()」方法。

我的建議永遠不會運行......我調試了我的代碼,並沒有看到我的建議在我的目標服務的顧問列表中。

我的方式離開基地認爲這將工作,或者我實施它不正確?

回答

9

請嘗試此切入點。

within(com.xyz.someapp.ChildServiceInterface+) && execution(* save(..)) 

+表示subtype pattern

1

,也可以使用

@Pointcut("execution(* com.xyz.someapp.ChildServiceInterface.*(..))") 
public void childServiceSavePointCut(); 

*把切入點在該類的所有方法表示所有的方法類型。

相關問題