截取具有返回值的接口的默认方法

时间:2019-05-10 22:11:27

标签: java spring aop

我想在返回值后拦截方法。

该方法是接口上的默认方法,我希望获得默认intf实现的返回值,并希望在具体类中重写实现。

这是我的方面:

@Aspect
@Configuration
public class ResAspect {

    @AfterReturning(pointcut = "within(org.my.app.Strategy+) && execution(* shouldEnter(..))", returning = "res")
    public void shouldOperate(JoinPoint jp, boolean res) {
        System.out.println();
    }
}

这是默认方法:

    default boolean shouldEnter(int i, Rec r) {
        return !evaluate(i, r);
    }

您可以猜测它不起作用。那么我可以通过Spring AOP实现我想要的吗?

我可以在方面内访问实现类实例及其属性吗?

编辑:我要拦截的界面位于另一个模块中

1 个答案:

答案 0 :(得分:0)

您可以在建议内访问在其上调用方法的实例(也称为目标):

YourInterface interfaceReference = (YourInterface) joinPoint.getTarget();

然后,您可以使用检索到的对象访问任何内容。