1 切入点表达式

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.*(doubledouble))

含义

参数类型为double,double类型的方法

③在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]其他通知可以通过方法名称引入该切入点

    

https://www.cnblogs.com/kangxingyue-210/p/7449924.html

最新文章

  1. HttpURLConnection使用getInputStream无法执行
  2. libsvm Minist Hog 手写体识别(源码文件)
  3. sudo su权限案例
  4. PHP 生成图片缩略图函数
  5. JS trim()方法使用
  6. NeHe OpenGL教程 第十七课:2D图像文字
  7. OC6_代理的基本概念
  8. jQuery选择器——全新的总结方式
  9. 学号:201521123116 《java程序设计》第一周学习总结
  10. webstorm配置scss环境
  11. HBase的环境配置及其应用
  12. Mac OS X版本的sublime text 3安装汇编语言语法支持
  13. Google I/O 官方应用中的动效设计
  14. Collections工具类
  15. Java 常用类的使用例子(整理)
  16. Atitit.pagging  翻页功能解决方案专题 与 目录大纲 v3 r44.docx
  17. 未能加载文件或程序集“Oracle.DataAccess”或它的某一个 依赖项。如何解决?
  18. centos7 lldb 调试netcore应用的内存泄漏和死循环示例(dump文件调试)
  19. Enhance基本例子
  20. cygwin下使用apt-cyg安装新软件

热门文章

  1. excel绘制多列 其中一列作为横坐标 ; 数值拟合
  2. win10 .net framework 3.5 离线安装 不需要外网
  3. 在spring管理的类的要注意问题
  4. 【chromium】cef是如何进行版本控制的?
  5. Java学习:字符串概述与特点
  6. 微信小程序和asp.net core基于docker和nginx的交互
  7. RabbitMQ的简单模式快速入门与超时异常的处理方法
  8. 使用node+vue实现简单的WebSocket聊天功能
  9. 原油PETROLAEUM英语PETROLAEUM石油
  10. 【译】Matplotlib:plotting