【问题标题】:How to create an aspect on an Interface Method that extends from A "Super" Interface如何在从“超级”接口扩展的接口方法上创建方面
【发布时间】:2011-02-10 14:35:54
【问题描述】:

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

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

我想只在我的一个“子”接口上创建一个切入点,以便在调用“保存”时使用。

我创建的切入点如下:

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

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

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

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

我的建议从未运行...我调试了我的代码,但在我的目标服务的顾问列表中没有看到我的建议。

我是不是认为这会起作用,还是我执行不正确?

【问题讨论】:

    标签: java spring aop aspectj


    【解决方案1】:

    试试这个切入点。

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

    + 表示subtype pattern

    【讨论】:

      【解决方案2】:

      或者您可以使用

      将切入点放在该类的所有方法上
      @Pointcut("execution(* com.xyz.someapp.ChildServiceInterface.*(..))")  
      public void childServiceSavePointCut();
      

      * 表示所有方法类型。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多