如何在接口方法上创建从“超级”扩展的方面界面
我有一个从基本接口扩展的服务层接口;我想围绕我的服务层接口创建一个切入点,但在基本接口中定义的方法之一上。
例如......我的基本接口中有一个名为“save()”的方法,我将其放入我的基本接口中,因为我的所有“子”接口都会提供“保存”功能。
我想仅在我的“子”界面之一上创建一个切入点,以便在调用“保存”时使用。
我创建了如下切入点:
@Pointcut("execution(* com.xyz.someapp.ChildServiceInterface.save(..))")
public void childServiceSavePointCut();
然后,我围绕上述切入点创建了一个 @Around 建议,如下所示:
@Around("childServiceSavePointCut()")
public void doMyAdvice()....
其中“ChildServiceInterface”扩展了另一个定义了“save()”方法的接口。
我的建议从未运行...我调试了代码,但在目标服务的顾问列表中没有看到我的建议。
我是否认为这会起作用,或者我是否错误地实施了它?
I have a service-layer Interface that extends from a base Interface; I would like to create a Pointcut around my service-layer Interface, but on one of the methods defined in the base Interface.
For instance.... I have a method in my base Interface called "save()", I put it in my base Interface since just all of my "child" Interfaces will provide "save" functionality.
I would like to create a PointCut on only one of my "child" interfaces for when my "save" gets called.
I created the pointcut like the following:
@Pointcut("execution(* com.xyz.someapp.ChildServiceInterface.save(..))")
public void childServiceSavePointCut();
I then created a @Around advice around the above pointcut like the following:
@Around("childServiceSavePointCut()")
public void doMyAdvice()....
where "ChildServiceInterface" extends another Interface which has the "save()" method defined.
My Advice never runs... I debugged my code and do not see my Advice in the list of Advisors for my target service.
Am I way off base thinking this will work, or am I implementing it incorrectly?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
试试这个切入点。
+
表示 子类型模式 。Try this pointcut instead.
The
+
indicates a subtype pattern.将切入点放在该类的所有方法上。
或者,您可以使用
*
指示所有方法类型,Or you can put pointcut on all the methods of that class using
The
*
indicates all method type.这对我有帮助:
This one helps me: