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