如何在从“超级”接口扩展的接口方法上创建方面

时间:2011-02-10 14:35:55

标签: spring aop aspectj

我有一个从基础接口扩展的服务层接口;我想在我的服务层接口周围创建一个Pointcut,但是在基本接口中定义的一个方法上。

例如....我的基本接口中有一个名为“save()”的方法,我将它放在我的基本接口中,因为我的所有“子”接口都将提供“保存”功能。

我想在我的“子”界面上创建一个PointCut,以便在调用“save”时。

我创建了切入点,如下所示:

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

然后我围绕上述切入点创建了一个@Around建议,如下所示:

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

其中“ChildServiceInterface”扩展了另一个定义了“save()”方法的接口。

我的建议永远不会运行...我调试了我的代码,并没有在我的目标服务的顾问列表中看到我的建议。

我离开基地认为这会起作用,还是我不正确地实施它?

2 个答案:

答案 0 :(得分:13)

请尝试使用此切入点。

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

+表示subtype pattern

答案 1 :(得分:2)

或者你可以使用

对该类的所有方法进行切入
@Pointcut("execution(* com.xyz.someapp.ChildServiceInterface.*(..))")  
public void childServiceSavePointCut();

*表示所有方法类型。