• 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。

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

    自定义切入点

      暂不学习

  • 相关阅读:
    浅谈c/c++中的指针问题
    谈谈八大排序算法问题
    隐藏在default construct后面的是什么
    浅谈编译过程和符号表重定位问题
    1.在VC编译器下面为什么每个头文件以及源文件都要包含“stdAfx.h”,那么stdAfx.h中到底存放了什么,用来做什么?
    成长从今天开始
    正则表达式
    安装RPM包或者安装源码包
    文档的压缩与打包
    文本编辑工具
  • 原文地址:https://www.cnblogs.com/victoria-c/p/5737112.html
Copyright © 2020-2023  润新知