美文网首页
AspectJ切点表达式

AspectJ切点表达式

作者: changhr2013 | 来源:发表于2018-07-05 16:19 被阅读0次

@AspectJ 支持三种通配符

* 匹配任意字符,只匹配一个元素

.. 匹配任意字符,可以匹配多个元素 ,在表示类时,必须和 * 联合使用

+ 表示按照类型匹配指定类的所有类,必须跟在类名后面,如 com.cad.Car+ ,表示继承该类的所有子类包括本身

逻辑运算符

切点表达式由切点函数组成,切点函数之间还可以进行逻辑运算,组成复合切点。

  • &&:与操作符。相当于切点的交集运算。xml配置文件中使用切点表达式,&是特殊字符,所以需要转义字符&来表示。

  • ||:或操作符。相当于切点的并集运算。

  • !:非操作符,相当于切点的反集运算。

Spring 支持 9 个 @AspectJ 切点表达式函数,它们用不同的方式描述目标类的连接点。我们来了解几个常用的

execution()

execution() 是最常用的切点函数,用来匹配方法

语法:
execution(<修饰符><返回类型><包.类.方法(参数)><异常>) 
修饰符和异常可以省略。
使用例子
  • execution(public * *(..)) :匹配目标类的所有public方法,第一个*代表返回类型,第二个*代表方法名,..代表方法的参数。

  • execution(**User(..)) :匹配目标类所有以User为后缀的方法。第一个*代表返回类型,*User代表以User为后缀的方法

  • execution(* com.cad.demo.User.*(..)) :匹配 User 类里的所有方法

  • execution(* com.cad.demo.User+.*(..)) :匹配该类的子类包括该类的所有方法

  • execution(* com.cad.*.*(..)) :匹配 com.cad 包下的所有类的所有方法

  • execution(* com.cad..*.*(..)) :匹配 com.cad 包下、子孙包下所有类的所有方法

  • execution(* addUser(Spring, int)) :匹配 addUser 方法,且第一个参数类型是 String,第二个参数类型是 int

args()

args()函数接受一个类名,表示目标类方法参数是指定类时(包含子类),则匹配切点。

args(com.cad.User) :匹配 addUser(User user) 方法等

within()

匹配类

语法:
within(<类>)

within(com.cad.User) :匹配 User 类下的所有方法

target()

target()函数通过判断目标类是否按类型匹配指定类决定连接点是否匹配。

target(com.cad.User) :如果目标类类型是 User 类那么目标类所有方法都匹配切点。

this()

this()函数判断代理对象的类是否按类型匹配指定类。

相关文章

  • 说说 Spring 支持的 AspectJ 语法

    本文以 AspectJ5.0 为基础。 1 切点表达式 AspectJ5.0 的切点表达式由关键字和操作参数组成。...

  • aspectj注解方式创建切面

    切点切点是一个接口,切点表达式定义的方法(切点的方法)执行的时候触发通知切点不需要使用 aspectj注解声明,只...

  • Spring AOP 切点指示器

    Spring AOP借助AspectJ的切点表达式语言来定义Spring切面,下面是切点表达式中使用的指示器: e...

  • Android aop Advice(通知、增强)

    推荐阅读系列文章 Android aop切点表达式(execution)Android aop(AspectJ)查...

  • AspectJ

    一、AspectJ概念demo演示 切点的语法:关键字为pointcut,切点名字以及匹配表达式,目标方法调用形式...

  • AspectJ切点表达式

    @AspectJ 支持三种通配符 * 匹配任意字符,只匹配一个元素 .. 匹配任意字符,可以匹配多个元素 ,在表示...

  • AspectJ切点表达式

    在 Spring 中,我们使用切点表达式帮助我们指明切点,而且切面粒度最小达到方法级别,这样的切入深度,能够满足我...

  • chapter04_面向切面的Spring_2_切点

    Spring AOP 中,使用AspectJ的切点表达式语言来定义切点,但是只使用一部分,因为Spring不支持字...

  • 2019-07-13 spring aop 2(spring a

    本文章接上一篇,上一票最后介绍了getAdvisor的作用,1.获取 AspectJ 表达式切点,2.创建 Adv...

  • AOP实现登陆检测

    为何想到AOP AOP 项目完整代码 如何接入 AspectJ 具体实现 自定义切点 切面 使用如何 获取切点中的...

网友评论

      本文标题:AspectJ切点表达式

      本文链接:https://www.haomeiwen.com/subject/ukmpuftx.html