原 SpringFramework核心技术五:Spring AOP API

一、概念

1.Spring的切入点模型使切入点重用独立于建议类型。可以使用相同的切入点来定位不同的建议。

该org.springframework.aop.Pointcut接口是中央接口,用来将通知到特定的类和方法。完整的界面如下所示:

public interface Pointcut {

    ClassFilter getClassFilter();

    MethodMatcher getMethodMatcher();

}

将Pointcut接口拆分为两部分允许重用类和方法匹配部分,以及细粒度合成操作(例如与另一个方法匹配器执行“联合”)。

该ClassFilter接口用于将切入点限制为给定的一组目标类。如果matches()方法始终返回true,则将匹配所有目标类:

public interface ClassFilter {

    boolean matches(Class clazz);
}

该MethodMatcher接口通常更重要。完整的界面如下所示:

public interface MethodMatcher {

    boolean matches(Method m, Class targetClass);

    boolean isRuntime();

    boolean matches(Method m, Class targetClass, Object[] args);
}

该matches(Method, Class)方法用于测试此切入点是否与目标类上的给定方法匹配。可以在创建AOP代理时执行此评估,以避免需要对每个方法调用进行测试。如果2参数matches方法对给定方法返回true,并且isRuntime()MethodMatcher 的方法返回true,则将在每次方法调用时调用3参数匹配方法。这使切入点能够在执行目标通知之前立即查看传递给方法调用的参数。

大多数MethodMatchers都是静态的,这意味着它们的isRuntime()方法返回false。在这种情况下,永远不会调用3参数匹配方法。

二、使用
SpringAOP在工作中,用的地方主要是拦截器、监控和日志等模块。讲的比较抽象,如果毕竟感兴趣,请参考:
SpingAop详解

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值