我有一个从基础接口扩展的服务层接口;我想在我的服务层接口周围创建一个Pointcut,但是在基本接口中定义的一个方法上。
例如....我的基本接口中有一个名为“save()”的方法,我将它放在我的基本接口中,因为我的所有“子”接口都将提供“保存”功能。
我想在我的“子”界面上创建一个PointCut,以便在调用“save”时。
我创建了切入点,如下所示:
@Pointcut("execution(* com.xyz.someapp.ChildServiceInterface.save(..))")
public void childServiceSavePointCut();
然后我围绕上述切入点创建了一个@Around建议,如下所示:
@Around("childServiceSavePointCut()")
public void doMyAdvice()....
其中“ChildServiceInterface”扩展了另一个定义了“save()”方法的接口。
我的建议永远不会运行...我调试了我的代码,并没有在我的目标服务的顾问列表中看到我的建议。
我离开基地认为这会起作用,还是我不正确地实施它?
答案 0 :(得分:13)
请尝试使用此切入点。
within(com.xyz.someapp.ChildServiceInterface+) && execution(* save(..))
+
表示subtype pattern。
答案 1 :(得分:2)
或者你可以使用
对该类的所有方法进行切入@Pointcut("execution(* com.xyz.someapp.ChildServiceInterface.*(..))")
public void childServiceSavePointCut();
*
表示所有方法类型。