`

Spring的3种切入点(Pointcut)实现

阅读更多

Spring的3种切入点(Pointcut)实现

上节讲过,Pointcut是Join Point的集合,它是程序中需要注入Advice的位置的集合。Spring主要提供了3种切入点(Pointcut)的实现:静态切入点、动态切入点和自定义切入点,下面分别进行讲解。

1 静态切入点

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

<bean id="settersAndAbsquatulatePointcut"

class="org.springframework.aop.support.RegexpMethodPointcut">

<property name="patterns">

<!--设定切入点-->

<list>

<value>.*save.*</value>

<value>.*do.* </value>

</list>

</property>

</bean>

代码说明:

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

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

2 动态切入点

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

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

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

3 自定义切入点

因为Spring中的切入点是Java类,而不是语言特性(如AspectJ),因此可以定义自定义切入点。因为AOP还没有完全成熟,Spring提供的文档在这方面也没有提供更详细的解释,所以这里将不再对动态切入点和自定义切入点进行更加详细的介绍。

分享到:
评论

相关推荐

    详解Spring 框架中切入点 pointcut 表达式的常用写法

    在Spring框架中,切入点(pointcut)表达式是AOP(面向切面编程)的核心组成部分,用于定义关注点的精确位置,比如哪些方法应该被拦截。切入点表达式是基于AspectJ语法的,允许开发者精确地指定要拦截的方法。下面将详细...

    Java EE,Spring基础及应用-切入点(Pointcut)

    在这篇文章中,我们将深入探讨Spring中的切入点(Pointcut)概念,它是AOP的关键组成部分。 首先,我们要明白什么是AOP。AOP是一种编程范式,它允许程序员定义“方面”——关注点的模块化,这些关注点是跨越多个...

    Spring AOP 所有切入点指示符详解.docx

    Spring AOP通过使用切入点(Pointcut)和通知(Advice)来实现这一目标。切入点是定义关注点何时触发的表达式,而通知则是实际执行的动作。 Spring AOP目前只支持方法执行这个连接点,下面我们将详细解析Spring AOP...

    跟我学Spring3(6.5)AspectJ切入点语法详解

    在本篇内容中,我们将深入探讨Spring框架中的一个重要概念——AspectJ切入点语法,这是Spring AOP(面向切面编程)的核心部分。通过学习这一章节,您可以掌握如何在Spring3中利用AspectJ的强大功能来实现更加灵活和...

    使用切入点匹配方法实现Spring AOP环绕通知

    3. 切入点(Pointcut):定义一组连接点,用于定位我们感兴趣的点。 4. 通知(Advice):在特定连接点上运行的代码,包括前置通知、后置通知、异常通知、最终通知和环绕通知。 5. 织入(Weaving):将切面与目标对象...

    Spring实现AOP的四种方式

    3. **切入点(Pointcut)**:切入点定义了通知执行的具体位置,可以是类或方法的名称,甚至可以用正则表达式指定。 4. **切面(Aspect)**:切面由通知和切入点组成,是关注点的模块化。 5. **引入(Introduction)**:...

    Spring AOP 常用的四种实现方式

    开发者需要在`&lt;aop:config&gt;`标签内定义切面,包括切入点表达式(pointcut expression)和通知类型。虽然这种方式相对繁琐,但它提供了最大的灵活性,因为所有细节都可以在配置文件中控制。然而,随着注解驱动AOP的...

    j2ee中拦截器+切入点+正则切入点+代理

    在J2EE应用程序开发中,拦截器(Interceptor)、切入点(Pointcut)和代理(Proxy)是Spring框架中的重要概念,它们对于实现灵活的控制流程、事务管理、日志记录等功能起到关键作用。以下是对这些概念的详细解释: ...

    Spring AOP 常用的四种实现方式的代码

    在Spring的配置文件中,可以定义`&lt;aop:config&gt;`、`&lt;aop:aspect&gt;`、`&lt;aop:pointcut&gt;`等元素来声明切面、切入点和通知。 在实际开发中,选择哪种实现方式取决于项目需求和目标对象的特点。接口代理和注解方式通常更易...

    SpringAop学习笔记以及实现Demo

    3. **基于XML配置的AOP**:在Spring的配置文件中,可以通过`&lt;aop:config&gt;`、`&lt;aop:advisor&gt;`、`&lt;aop:pointcut&gt;`等标签定义切面、通知和切入点。 ### 三、Spring AOP实战 1. **经典代理模式**:通过JDK动态代理或...

    应用Spring AOP(二)-------通过Advisor指定切入点

    我们可以通过`@Pointcut`注解来声明一个切入点,并在其中编写正则表达式或使用Spring提供的`ExpressionPointcut`类来匹配方法。 接下来,Advisor是Spring AOP的重要组成部分,它结合了切入点和通知。Advisor是一个...

    一个简单的spring AOP的实现

    4. 切入点(Pointcut):切入点是匹配连接点的规则,定义了通知将在哪些连接点应用。可以使用表达式或者注解来定义切入点。 5. 引入(Introduction):引入允许我们向现有类添加新的方法或属性,而不修改其源代码。...

    Spring AOP实现机制

    - **切入点(Pointcut)**:匹配连接点的表达式,用于指定通知应用的具体位置。 - **织入(Weaving)**:将切面与应用程序的其他部分结合在一起的过程,可以发生在编译时、类加载时或运行时。 ### 2. Spring AOP的...

    spring3实例Demo

    在Spring中,我们可以通过定义切面(aspect)、通知(advice)和切入点(pointcut)来实现AOP。例如,我们可以通过定义一个事务切面来确保在执行数据库操作时,如果出现异常则回滚事务。 数据访问方面,Spring3提供...

    Spring5种增强代码

    2. XML配置的切面:在Spring的XML配置文件中,使用`&lt;aop:config&gt;`标签定义切面,`&lt;aop:advisor&gt;`标签定义通知,以及`&lt;aop:pointcut&gt;`标签定义切入点。 3. 自动代理:Spring AOP可以自动创建代理来拦截目标对象的...

    Spring中的AOP不生效

    1. **确认是否正确配置了AOP切面**:检查AOP配置文件或类中的所有配置项是否设置正确,包括切入点表达式(Pointcut)、通知类型(Advice)等。 2. **检查Service类是否被Spring管理**:确保受影响的Service类已经...

    Spring AOP的简单实现

    总结,Spring AOP通过切面、切入点和通知等概念,提供了在不入侵原有代码的基础上,进行日志记录、事务管理、性能监控等多种跨切面操作的能力。在实际开发中,利用AOP可以有效地提高代码的复用性和模块化程度,降低...

    Spring切入点表达式配置过程图解

    下面我们将详细探讨Spring切入点表达式配置的过程以及相关标签的使用。 1. **** 标签: 这个标签是Spring AOP配置的根元素,用于声明AOP的相关配置。在`&lt;aop:config&gt;`中,我们可以定义多个切面、切入点和通知,以...

    springAop的配置实现

    Spring AOP通过XML配置文件提供了灵活的方式来定义和管理切面、切入点和通知,使得我们可以轻松地在应用程序中实现横切关注点的解耦。了解和掌握Spring AOP的配置实现,有助于提升我们构建松散耦合、易于维护的系统...

    spring aop demo 两种实现方式

    本示例提供了一种通过注解和配置文件两种方式实现Spring AOP的方法。 首先,我们来详细讲解通过注解实现Spring AOP。在Spring中,我们可以使用`@Aspect`注解来定义一个切面,这个切面包含了多个通知(advice),即...

Global site tag (gtag.js) - Google Analytics