zoukankan      html  css  js  c++  java
  • Spring的3种切入点PointCut实现

       Pointcut是Join Point的集合,它是程序中需要注入Advice的位置的集合。Spring主要提供了3种切入点的实现:

       1.静态切入点;

       2.动态切入点;

            3.自定义切入点。

    静态切入点

      只限于给定的方法和目标类,而不考虑方法的参数。Spring在调用鼎泰切入点时只在第一次的时候计算静态切入点的位置,然后把它缓存起来,以后就不需要在进行计算。使用org.springframework.aso.support.RegexpMethodPointcut 可以实现静态切入点。RegexpMethodPointcut是一个通用的正则表达式切入点,它是通过Jakarta ORO来实现的,需要把jakarta-oro-2.0.8.jar加入到ClassPath中,它的正则表达式语法和Jakarta ORO的正则表达式语法是一样的。使用RegexpMethodPointcut的一个示例代码如下:

    1 <bean id="settersAndAbsquatulatePointcut" class="org.springframework.aop.support.RegexpMethodPointcut">
    2   <property name="patterns">
    3     <!--设定切入点>
    4     <list>
    5       <value>.*save.*</value>
    6       <value>.*do.*</value>
    7     </list>
    8   </porperty>
    9 </bean>

    .*save.*:表示所有以save开头的方法都是切入点

    .*do.*:表示所有以do开头的方法都是切入点

    动态切入点

      动态切入点与静态切入点的区别是,它不仅限定于给点的方法和类,动态切入点还可以以指定方法的参数。因为参数的变化性,所有动态切入点不能缓存,需要么次调用的时候都进行计算,因此使用动态切入点有很大性能损耗。

      当切入点需要在执行时根据参数值来调用通知时,就需要使用动态切入点。Spring提供了一个内建的动态切入点:控制流切入点。此切入点匹配基于当前线程的调用堆栈。开发人员只有在当前线程执行时找到特定的类和特定的方法才返回true。

      其实大多数的切入点可以使用静态切入点,所有很少有机会创建动态切入点。

    自定义切入点

      暂不学习

  • 相关阅读:
    如何做好接口测试?【转载】
    AutoIT 实现Firefox上传文件
    AutoIT 实现Firefox下载
    测试工具的选择和使用
    JMeter学习参数化User Defined Variables与User Parameters
    JMeter学习(六)集合点
    JMeter学习(五)检查点
    JMeter学习(四)参数化
    JMeter学习(三)元件的作用域与执行顺序
    JMeter学习(二)录制脚本
  • 原文地址:https://www.cnblogs.com/victoria-c/p/5737112.html
Copyright © 2011-2022 走看看