美文网首页
Spring的AOP之通过切点来选择连接点

Spring的AOP之通过切点来选择连接点

作者: 郭之源 | 来源:发表于2016-09-02 09:40 被阅读1183次

切点用于准确定位应该在什么地方应用切面的通知。通知和切点是切面的最基本的元素。在Spring AOP中要使用AspectJ的切点表达式来定义切点。下面我们列出Spring AOP所支持的AspectJ切点指示器。

AOP原理图
AspectJ指示器 描述
arg() 限定连接点匹配参数为指定类型的执行方法
@args() 限定连接点匹配参数由指定注解标注的执行方法
execution() 用于匹配连接点执行的方法
this() 限定连接点匹配AOP代理的类型bean引用为指定类型的类
target() 限定连接点匹配目标对象为指定类型的类
@target() 限定连接点匹配特定的执行对象,这些对象对应的类要有指定类型的注解
within() 限定匹配连接点指定的类型
@within() 限定匹配连接点指定注解所标注的类型(当使用Spring AOP时,方法定义在指定的注解所标注的类里)
@annotation 限定匹配带有特定注解的连接点

在Spring 中尝试使用AspectJ其他的的指示器,将会抛出IllegalArgumentException异常。我们看到在上面介绍的指示器中只有execution()是实际执行匹配的,而其他指示器都是限制匹配的。所以我们通常使用execution指示器匹配,然后通过其他指示器进行限制。

1.编写切点

为了阐述Spring中的切面,我们要限定一个切点:

public interface Performance {
    
    public void perform();
}

下面我们定义一个表达式,设置当perform()执行时触发通知的调用:

匹配表达式
execution(* concert.Perfirmance.perform(..))

第一个*代表匹配所有类型的返回值,中间的类名.方法名指定匹配的类的特定方法,()中的 .. 表示匹配所有的参数列表。
我们好可以在ececution中使用其他的匹配器,用来过滤匹配的方法:

execution(* concert.Perfirmance.perform(..) && within(concer.*))

上面的表达式表示匹配concert.Perfirmance的perform方法,并且该方法在concer包中。里面的&&表示与的意思,除此之外还有 || 表示或, ! 表示非。但是 & 在Xml中有特殊的含义,这时我们也可以使用 and 代替 && ,用 or 代替 || ,用 not 代替 !。

2.在切点中选择bean

处理上面;列出的指示器外,Spring还支持一种新的指示器bean(),它允许我们在切点中使用bean的ID来标示bean:

execution(* concert.Perfirmance.perform(..)  and bean('woodstock'))

在这里我们限定了bean的ID为 woodstock,其实bean()指示器更多的使用场景是 除去特定ID的bean应用通知:

execution(* concert.Perfirmance.perform(..)  and !bean('woodstock'))

在这种场景下,切面的通知会被编织到所有ID不为woodstock的bean中。本节我们大致介绍了切点的定义与几种使用场景,下节我们会学习如何编写通知和使用这些切点声明切面。

相关文章

  • Spring的AOP之通过切点来选择连接点

    切点用于准确定位应该在什么地方应用切面的通知。通知和切点是切面的最基本的元素。在Spring AOP中要使用Asp...

  • 第五章 spring aop

    5.1 AOP概念 spring aop核心概念图 通知 定义:在特定连接点执行的代码就是通知。内容:通知定义了切...

  • Spring AOP编程详细介绍

    查看原文: Spring AOP 之 通知、连接点、切点、切面知乎:什么是面向切面编程

  • Spring学习之AOP

    AOP 术语 通知: 就是增强的方法(如记录日志,事务等) 连接点:就是指Spring允许你增强的地方都可以称为连...

  • 06 Spirng中的AOP

    AOP 相关术语 Joinpoint( 连接点): 所谓连接点是指那些被拦截到的点。在 spring 中,这些点...

  • Spring AOP介绍(一)之 Spring AOP 基础介绍

    Spring AOP介绍(一)之 Spring AOP 基础介绍 AOP是什么? AOP(Aspect Orien...

  • 金三银四学习笔记 —— Spring Aop知识点总结

    知识点: 各种连接点joinPoint的意义 spring AOP XML实现方式的注意事项: spring AO...

  • 5.2 AOP的类型

    静态AOP 优点:性能较好支持更多类型的连接点如果需要在spring使用静态AOP,就需要使用AspectJ 动态...

  • spring的AOP知识点2.0

    一AOP相关概念Joinpoint(连接点):所谓连接点是指那些被拦截到的点。在spring中,这些点指的是方法,...

  • SpringAop

    1.AOP的术语:Joinpoint(连接点):所谓连接点是指那些被拦截到的点。在spring中,这些点指的是方法...

网友评论

      本文标题:Spring的AOP之通过切点来选择连接点

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