Spring AOP 切点(pointcut)表达式

这遍文章将介绍Spring AOP切点表达式(下称表达式)语言,首先介绍两个面向切面编程中使用到的术语。

  • 连接点(Joint Point):广义上来讲,方法、异常处理块、字段这些程序调用过程中可以抽像成一个执行步骤(或者说执行点)的单元。从Spring AOP来讲,就是指java的方法和异常处理代码块。
  • 切点(Pointcut):是连接点的描述定义,Spring AOP通过切点来定位到哪些连接点。切点表达式语言就是切点用来定义连接点的语法。

切点指示符

切点指示符是切点定义的关键字,切点表达式以切点指示符开始。开发人员使切点指示符来告诉切点将要匹配什么,有以下9种切点指示符:execution、within、this、target、args、@target、@args、@within、@annotation,下面一一介结这9种切点指示符。

execution

execution是一种使用频率比较高比较主要的一种切点指示符,用来匹配方法签名,方法签名使用全限定名,包括访问修饰符(public/private/protected)、返回类型,包名、类名、方法名、参数,其中返回类型,包名,类名,方法,参数是必须的,如下面代码片段所示:

@Pointcut("execution(public String org.baeldung.dao.FooDao.findById(Long))")

上面的代码片段里的表达式精确地匹配到FooDao类里的findById(Long)方法,但是这看起来不是很灵活。假设我们要匹配FooDao类的所有方法,这些方法可能会有不同的方法名,不同的返回值,不同的参数列表,为了达到这种效果,我们可以使用通配符。如下代码片段所示:

@Pointcut("execution(* org.baeldung.dao.FooDao.*(..))")

第一个通配符匹配所有返回值类型,第二个匹配这个类里的所有方法,()括号表示参数列表,括号里的用两个点号表示匹配任意个参数,包括0个

转载至:https://blog.51cto.com/5914679/2092253

原文地址:https://www.cnblogs.com/sxjblogs/p/10761459.html

时间: 2024-10-12 10:29:34

Spring AOP 切点(pointcut)表达式的相关文章

spring aop中pointcut表达式完整版

spring aop中pointcut表达式完整版 本文主要介绍spring aop中9种切入点表达式的写法 execute within this target args @target @within @annotation @args 0. 示例代码git地址 https://gitee.com/likun_557/spring-aop-demo 1.execute表达式 拦截任意公共方法 execution(public * *(..)) 拦截以set开头的任意方法 execution(

Spring AOP AspectJ Pointcut 表达式例子

主要来源:http://howtodoinjava.com/spring/spring-aop/writing-spring-aop-aspectj-pointcut-expressions-with-examples/ 1. 方法标签匹配方式 假设定义了接口EmployeeManager接口. 1) execution(* com.howtodoinjava.EmployeeManager.*( .. )) 以上切入点表达式可以匹配EmployeeManger接口中所有的方法. 2) 当切面方

Spring AOP中pointcut expression表达式解析

Pointcut 是指那些方法需要被执行"AOP",是由"Pointcut Expression"来描述的. Pointcut可以有下列方式来定义或者通过&& || 和!的方式进行组合. args() @args() execution() this() target() @target() within() @within() @annotation 其中execution 是用的最多的,其格式为: execution(modifiers-patt

Spring Aop 切点表达式

在Spring AOP 中,通常需要借助AspectJ 的切点表达式语言来定义切点.重要的是Spring 中仅支持AspectJ切点指示器的一个子集. Spring 支持的AspectJ的切点指示器 AspectJ 指示器 描述 args() 限制连接点匹配参数为执行类型的执行方法 @args() 限制连接点匹配参数由执行注解标注的执行方法 execution() 匹配连接点的执行方法 this() 限制连接点匹配AOP代理的Bean引用类型为指定类型的Bean target() 限制连接点匹配

Spring AOP中pointcut expression表达式解析 及匹配多个条件

Pointcut 是指那些方法需要被执行"AOP",是由"Pointcut Expression"来描述的. Pointcut可以有下列方式来定义或者通过&& || 和!的方式进行组合. args() @args() execution() this() target() @target() within() @within() @annotation 其中 execution 是用的最多的,其格式为: execution(modifiers-pat

Spring AOP切点表达式用法总结

1. 简介 面向对象编程,也称为OOP(即Object Oriented Programming)最大的优点在于能够将业务模块进行封装,从而达到功能复用的目的.通过面向对象编程,不同的模板可以相互组装,从而实现更为复杂的业务模块,其结构形式可用下图表示: 面向对象编程解决了业务模块的封装复用的问题,但是对于某些模块,其本身并不独属于摸个业务模块,而是根据不同的情况,贯穿于某几个或全部的模块之间的.例如登录验证,其只开放几个可以不用登录的接口给用户使用(一般登录使用拦截器实现,但是其切面思想是一致

Spring AOP中 pointcut expression表达式解析

任意公共方法的执行: execution(public * *(..)) 任何一个以“set”开始的方法的执行: execution(* set*(..)) AccountService 接口的任意方法的执行: execution(* com.xyz.service.AccountService.*(..)) 定义在service包里的任意方法的执行: execution(* com.xyz.service.*.*(..)) 定义在service包和所有子包里的任意类的任意方法的执行: exec

Spring AOP的切入点表达式

在spring Aop中要使用AspectJ的切点表达式语言来定义切点.Spring仅仅支持AspectJ切点指示器的一个子集.下表列出了Spring AOP所支持的AspectJ切点指示器. 在Spring中尝试使用AspectJ其他指示器时会抛出IlleagalArgumentException.以上指示器中只有execution指示器是实际执行匹配的,而其他的指示器都是用来限制匹配的. 一个常见的切点表达式如下图: 表达式以"*"号开始,表明了可以返回任何数据类型.对于参数列表使

【Spring AOP】切入点表达式(四)

一.切入点指示符 切入点指示符用来指示切入点表达式目的,在Spring AOP中目前只有执行方法这一个连接点,Spring AOP支持的AspectJ切入点指示符如下: execution:用于匹配方法执行的连接点: within:用于匹配指定的类及其子类中的所有方法. this:匹配可以向上转型为this指定的类型的代理对象中的所有方法. target:匹配可以向上转型为target指定的类型的目标对象中的所有方法. args:用于匹配运行时传入的参数列表的类型为指定的参数列表类型的方法: @