AOP常用术语
1.连接点(Joinpoint)
程序执行的某个特定位置:如类开始初始化前,类初始化后,类某个方法调用前,调用后,方法跑出异常后。一个类或一段程序代码拥有一些具有边界性质的特定点、这些代码中的特定点就成为连接点。
Spring仅支持方法的连接点,即仅能在方法调动前,方法调用后,方法跑出异常时以及方法调用前后这些程序执行点织入增强。
连接点由两个信息确定:
1)方法表示程序执行点
2)用相对点表示的方位。
如在Test.foo()方法执行前的连接点,执行点为Test.foo(),方位为该方法执行前的位置。
2.切点(Pointcut)
每个程序类都拥有多个连接点,如一个拥有两个方法的类,这两个方法都是连接点,即连接点是程序类中客观存在的事物,但在这些连接点中,如何定位到某个感兴趣的链接点上呢??AOP通过“切点”定位特定连接点。通过数据库查询的概念来理解切点和连接点的关系是:连接点相当于数据库中的记录,而切点相当于查询条件。
切点和连接点不是一对一关系,一个切点可以匹配多个连接点。
在Spring中,切点通过org.springframework.aop.pointcut接口进行描述,它使用类和方法作为连接点的查询条件,SpringAOP的规则解析引擎负责解析切点所设定的查询条件,找到对应的连接点。
3.增强:(Advice)
增强就是植入到目标类连接点上的一段程序代码。在Spring中,增强除用于描述一段程序代码外,还拥有另一个和连接点相关的信息,这便是执行点的方位。结合执行点方位信息和切点信息,我们可以找到特定的连接点了。
正因为增强包含了用于添加到目标连接点上的一段执行逻辑,又包含了拥有定位连接点的方位信息,所以Spring所提供的增强接口都是带方位名的:BeforeAdvice、AfterRetuningAdvice、ThrowAdvice等。BeforeAdvice表示方法调用前的位置,而AfterRetuningAdvice表示访问返回后的位置。
4.目标对象Target
增强逻辑的植入目标类,如果没有AOP,目标业务类需要自己实现所有逻辑。
5.引介(Introduction)
引介是一种特殊的增强,它为类添加一些属性和方法。这样即使一个业务类原本没有实现某个接口,通过AOP的引介功能,我们可以动态地位该业务类添加接口的实现逻辑,让业务类成为和这个接口的实现类。
6.织入(Weaving)
织入是将增强添加对目标类具体链接点上的过程,AOP像一台织布机,将目标类、增强或者引介通过AOP这台织布机天衣无缝的编制在一起。
AOP的织入方式:
1)编译期织入,这要求使用特殊的Java编译器
2)类装载器织入,这要求使用特殊的类装载器
3)动态代理织入,在运行期为目标类添加增强生成子类的方式。
7.代理(Proxy)
一个类被AOP织入增强后,就产生一个结果类,它是融合了原类和增强逻辑的代理类。根据不同的代理方式,代理类既可以使和原类具有相同接口的类,也可能是员类的子类。
8.切面(Aspect)
切面由切点和增强组成,它既包括横切逻辑的定义,也包括连接点的定义,Spring AOP就是负责实施切面的框架,它将切面所定义的横切逻辑织入到切面所指定的连接点中。
AOP常用术语的更多相关文章
- Spring代理模式及AOP基本术语
一.代理模式: 静态代理.动态代理 动态代理和静态代理区别?? 解析:静态代理需要手工编写代理类,代理类引用被代理对象. 动态代理是在内存中构建的,不需要手动编写代理类 代理的目的:是为了在原有的方法 ...
- Spring 代理模式及AOP基本术语
一.代理模式: 静态代理.动态代理 动态代理和静态代理区别?? 解析:静态代理需要手工编写代理类,代理类引用被代理对象. 动态代理是在内存中构建的,不需要手动编写代理类 代理的目的:是为了在原有的方法 ...
- Spring框架学习05——AOP相关术语详解
1.Spring AOP 的基本概述 AOP(Aspect Oriented Programing)面向切面编程,AOP采取横向抽取机制,取代了传统纵向继承体系重复性代码(性能监视.事务管理.安全检查 ...
- OLE/COM 对象查看器 & OLE常用术语
"OLE/COM Object Viewer"(OLE/COM 对象查看器)查看你系统上安装的所有 COM 对象时,是一个非常便利的工具. 它是 Windows 2000 资源套件 ...
- zabbix常用术语
zabbix常用术语
- Hacker(七)----黑客常用术语和DOS命令
掌握基本的黑客术语和DOS命令是一名黑客最基本的技能,黑客术语能够实现自己和其他人之间的正常交流.DOS命令就是DOS操作系统的命令,它是一种面向磁盘的操作命令.黑客在入侵目标主机的过程中经常会使用这 ...
- Spring AOP相关术语
---------------------siwuxie095 Spring AOP 相关术语 (1)Joinpoint ...
- python基础----面向对象的程序设计(五个阶段、对小白的忠告、关于OOP常用术语)、类、对象
一.面向对象的软件开发有如下几个阶段 1.面向对象分析(object oriented analysis ,O ...
- 第三十三篇 Python中关于OOP(面向对象)的常用术语
面向对象的优点 从编程进化论可知,面向对象是一种更高等级的结构化编程方式,它的好处主要有两点: 1. 通过封装明确了内外,你做为类的缔造者,你就是女娲,女娲造物的逻辑别人无需知道,女娲想让你知道,你才 ...
随机推荐
- python entrypoint
entrypoint, 实际是一张匹配表.匹配简短指令和具体的python函数的执行路径.有点快捷方式的概念. 不同的是,这种快捷方式不仅可以给命令行使用,还可以供其他代码简单调用,而无需关注太多细节 ...
- 【Linux】find grep 联合使用 过滤所有子目录、文件
find . -type f -name '*.*' | xargs grep --color -n 'Admin@123'find . -type f -name '*.*' | xargs sed ...
- VMware Workstation 下进行 桥连接
大家都知道进行桥连接的时候,需要我们的宿主机与虚拟机同处于一个网络段, 使得mask与默认网关相同即可进行连接 ; 本地的IP .掩码 . 网关: 虚拟机的Ip 掩码,网关: // 当然这里的DNS ...
- 转:C++编程隐蔽错误:error C2533: 构造函数不能有返回类型
C++编程隐蔽错误:error C2533: 构造函数不能有返回类型 今天在编写类的时候,出现的错误. 提示一个类的构造函数不能够有返回类型.在cpp文件里,该构造函数定义处并没有返回类型.在头文件里 ...
- 解读Unity中的CG编写Shader系列四(unity中的圆角矩形shader)
转自 http://www.itnose.net/detail/6097625.html 上篇文章中我们掌握了表面剔除和剪裁模式 这篇文章将利用这些知识实现一个简单的,但是又很常用的例子:把一张图片做 ...
- Unity3D研究院之手游开发中所有特殊的文件夹(转)
这里列举出手游开发中用到了所有特殊文件夹. 1.Editor Editor文件夹可以在根目录下,也可以在子目录里,只要名子叫Editor就可以.比如目录:/xxx/xxx/Editor 和 /Edi ...
- 自动编译和提交脚本(结合svn和visual studio)
@echo 更新代码开始----------------- TortoiseProc.exe /command:update /path:"D:\work\mmsanguo_publish_ ...
- iOS 串行网络请求。。。待研究
nsurlsession 和 nsurlconnection 能实现吗? 手动实现的关键点在哪里? 我这里说的串行网络请求,指的是第一个网络请求不返回数据,第二个网络请求就不能开始. AFNetwor ...
- oracle 学习
一.数据库语言部分1. SQL语言:关系数据库的标准语言2. PL/SQL:过程化语言Procedural Language3. SQL*Plus:简单的报表,操作系统接口 4. Oracle 8.0 ...
- Linux下如何移除同时在线的用户
Linux下移除同时在线的用户太多时,shell操作会变得比较卡,很多时候经常是直接关闭终端导致不正常退出,一般要等上一段时间才会退出,这个时候主动结束用户进程使用户下线是比较好的方式,方法如下: 使 ...