• spring相关—AOP编程—切入点、连接点


    切入点表达式

    1.1 作用

      通过表达式的方式定位一个或多个具体的连接点。

    1.2 语法细节

    ①切入点表达式的语法格式

    execution([权限修饰符] [返回值类型] [简单类名/全类名] [方法名]([参数列表]))

    ②举例说明

    表达式

    execution(* com.atguigu.spring.ArithmeticCalculator.*(..))

    含义

    ArithmeticCalculator接口中声明的所有方法。

    com.atguigu.spring.ArithmeticCalculator.*(..)表示目标方法的签名。

    第一个“*”代表任意修饰符及任意返回值。

    第二个“*”代表任意方法。

    ..”匹配任意数量、任意类型的参数。

    若目标类、接口与该切面类在同一个包中可以省略包名。

    表达式

    execution(public * ArithmeticCalculator.*(..))

    含义

    ArithmeticCalculator接口的所有公有方法

    表达式

    execution(public double ArithmeticCalculator.*(..))

    含义

    ArithmeticCalculator接口中返回double类型数值的方法

    表达式

    execution(public double ArithmeticCalculator.*(double, ..))

    含义

    第一个参数为double类型的方法。

    ..” 匹配任意数量、任意类型的参数。

    表达式

    execution(public double ArithmeticCalculator.*(double, double))

    含义

    参数类型为doubledouble类型的方法

    ③在AspectJ中,切入点表达式可以通过 “&&”、“||”、“!”等操作符结合起来。

    表达式

    execution (* *.add(int,..)) || execution(* *.sub(int,..))

    含义

    任意类中第一个参数为int类型的add方法或sub方法

    1.3 切入点表达式应用到实际的切面类中

     

    2 当前连接点细节

    2.1 概述

    切入点表达式通常都会是从宏观上定位一组方法,和具体某个通知的注解结合起来就能够确定对应的连接点。那么就一个具体的连接点而言,我们可能会关心这个连接点的一些具体信息,例如:当前连接点所在方法的方法名、当前传入的参数值等等。这些信息都封装在JoinPoint接口的实例对象中。

    2.2 JoinPoint

     

    3 重用切入点定义

      [1] 在编写AspectJ切面时,可以直接在通知注解中书写切入点表达式。但同一个切点表达式可能会在多个通知中重复出现。

      [2] AspectJ切面中,可以通过@Pointcut注解将一个切入点声明成简单的方法。切入点的方法体通常是空的,因为将切入点定义与应用程序逻辑混在一起是不合理的。

      [3] 切入点方法的访问控制符同时也控制着这个切入点的可见性。如果切入点要在多个切面中共用,最好将它们集中在一个公共的类中。在这种情况下,它们必须被声明为public。在引入这个切入点时,必须将类名也包括在内。如果类没有与这个切面放在同一个包中,还必须包含包名。

      [4]其他通知可以通过方法名称引入该切入点

        

  • 相关阅读:
    Arduino开发版学习计划--直流电机
    Arduino开发版学习计划--蜂鸣器
    社交网络编程API之iOS系统自带分享
    iOS解析XML实现省市区选择
    Frameworks(不定时更新)
    NSLayoutConstraint
    Categories  VS Extensions (分类 vs 扩展)
    strong vs copy
    折半查找
    Block
  • 原文地址:https://www.cnblogs.com/kangxingyue-210/p/7449924.html
Copyright © 2020-2023  润新知