1. 连接点joinpoint(类中所有方法)
  2. 切入点pointcut(缺少共性代码的方法)
  3. 通知advice(被抽取的共性功能的代码逻辑,通知有位置区分,也就是从切入点方法中被抽取代码的前面还是后面抽象出来的代码,叫通知类型。前置通知,后置通知)
  4. 引入introduction(通知只能抽取逻辑代码,变量是拿不出来的,把变量引入到切入点方法中去,就要用引入)
  5. 目标对象target Object(有切入点方法的对象)
  6. AOP代理AOP proxy(代理目标对象就叫做AOP代理)
  7. 织入Weaving(代理对象把通知织入到目标对象的切入点方法中,是一个动作)
  8. 切面Aspect(通知和切入点之间的关系)
 
  • 连接点
程序运行过程中,JVM负责程序运行。执行到某个方法时,JVM能识别当前执行的是哪个方法。这些定义在类中的方法,每个具有独立的功能,在AOP中,将这些具有特定功能的方法称为连接点
  • 切入点
类中的方法具有很多,某些方法具有一些共同的流程,例如数据库连接的获取与关闭,事务的开启与提交,等等。将这些公共的特性抽取出来,抽取完毕后,原始方法中就缺少了这些被抽取的代码。在实际运行时,缺少这些代码是无法完成原始的功能的。这些被抽取了公共功能的方法称为切入点
  • 通知
却如点对应的方法的功能性功能被抽取后,组成独立代码逻辑,被封装在某个类的某个方法中,在被抽取了共性功能的方法被执行时,这些代码逻辑还要加入原始方法的执行,这些被抽取出来组成独立代码逻辑的共性功能称为通知。
共性功能被抽取后,可能来自于切入点对应的方法中的任何位置,因此通知不仅描述共性的代码逻辑,还是描述被抽取时从何处抽取。例如切入点代码逻辑的前面,中间还是后面,被抽取的代码在切入点中的具体位置,称为通知类别。
  • 引入
通知仅表示切入点被抽取的代码逻辑,对于切入点所在的类,如果存在有共性的成员变量或者成员方法,通知将无法进行描述。AOP提供和引入机制,将共性功能的成员进行加入。
引入机制可以为类添加额外的成员变量或者成员方法。
引入机制是在编译期或类加载期完成的。
  • 目标对象
切入点对应的共性功能被抽取后创建独立的通知完成共性功能,在程序运行时,动态的为类对象执行切入点方法时动态加入被抽取的共性功能,此时需要使用代理的模式完成。此时被代理创建的对象,称为目标对象。
目标对象指包含切入点的类对象。
  • AOP代理
切入点所在的类对象执行切入点方法时,需要将原始的共性功能(通知)加入,此时通过代理的形式创建类对象,并完成共性功能(通知)的加入,上述过程称为AOP代理。
AOP代理的意义就是将被抽取共性功能的类对象创建出来,同时将功能共性功能(通知)加入,完成原始的完整操作的执行过程。
  • 织入
通过AOP代理,完成了切入点与通知的融合,并组成了完整的代码逻辑,将通知加入到植入点对应位置的动作称为织入。
织入是一个动态过程,不对应任何代码,可以理解为动态的运行过程。
织入可以在三个阶段进行,编译时,类加载时,运行时。spring采用的时运行时织入。
  • 切面
切面是一个设计概念,指切入点与通知的匹配模式,换句话说指被抽去了工薪功能的方法(切入点)与被抽取了共性功能(通知)对应的绑定关系。
程序设计时,可以设计多个切面,用来描述切入点与通知之间的关系。

AOP基本概念的更多相关文章

  1. Spring AOP基本概念

    Spring AOP基本概念 目录 Spring AOP定义 AOP基本术语 通知类型 AOP定义 AOP基本术语 切面( Aspect ):一个能横切多个对象的模块化的关注点.对Spring AOP ...

  2. Spring入门篇——AOP基本概念

    1.什么是AOP及实现方式 什么是AOP AOP:Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术 主要 ...

  3. Spring入门篇——第5章 Spring AOP基本概念

    第5章 Spring AOP基本概念 本章介绍Spring中AOP的基本概念和应用. 5-1 AOP基本概念及特点 5-2 配置切面aspect ref:引用另外一个Bean 5-3 配置切入点Poi ...

  4. Spring学习总结(1)——Spring AOP的概念理解

    1.我所知道的aop 初看aop,上来就是一大堆术语,而且还有个拉风的名字,面向切面编程,都说是OOP的一种有益补充等等.一下子让你不知所措,心想着:怪不得 很多人都和我说aop多难多难 .当我看进去 ...

  5. Spring Aop重要概念介绍及应用实例结合分析

    转自:http://bbs.csdn.net/topics/390811099 此前对于AOP的使用仅限于声明式事务,除此之外在实际开发中也没有遇到过与之相关的问题.最近项目中遇到了以下几点需求,仔细 ...

  6. Spring AOP入门——概念和注意事项

    AOP什么? AOP在功能方面,它是之前和之后运行一些业务逻辑,一些操作(比方记录日志.或者是推断是否有权限等),这些操作的加入.全然不耦合于原来的业务逻辑.从而对原有业务逻辑全然是透明. 也就是说. ...

  7. Spring学习(18)--- AOP基本概念及特点

    AOP:Aspect Oriented Programing的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序程序功能的统一维护的一种技术 主要的功能是:日志记录,性能统计,安全控制, ...

  8. Spring Core Programming(Spring核心编程) - AOP Concepts(AOP基本概念)

    1. What is aspect-oriented programming?(什么是面向切面编程?) Aspects help to modularize cross-cutting concern ...

  9. [08] AOP基本概念和使用

    1.什么是AOP AOP = Aspect Oriental Programing,即面向切面编程.什么概念,我们看如下的图片: 三个方法中,重复使用了代码A和代码B,典型的场景比如"开启事 ...

  10. Spring课程 Spring入门篇 5-1 aop基本概念及特点

    概念: 1 什么是aop及实现方式 2 aop的基本概念 3 spring中的aop 1 什么是aop及实现方式 1.1 aop,面向切面编程,比如:唐僧取经需要经过81难,多一难少一难都不行.孙悟空 ...

随机推荐

  1. sql bypass waf fuzz python

    从freebuf copy过来的,先保存,有空再改 #encoding=utf-8 import requests url = "http://127.0.0.1/index.php?id= ...

  2. python-基础入门-3(对文件操作)

    打开文件用open()函数 open(filename)默认为读取模式 等价于open(filename,'r') 1 txt=open(filename) 2 print txt.read() 3 ...

  3. B+树作为数据库索引有什么优势?I/O方面?

    首先要了解磁盘预读机制,大致就是说,从磁盘读取数据的速度比从内存读取数据的速度要慢很多,所以要尽量减少磁盘I/O的操作,尽量增加内存I/O操作,既然这样,我们可以从磁盘提前把需要的数据拿到内存,这样需 ...

  4. 金九银十想面BAT?那这些JDK 动态代理的面试点你一定要知道

    一.什么是代理 代理是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个对象的访问.代理类负责为委托类预处理消息,过滤消息并转发消息,以及进行消息被委托类执行后的后续处理. 代理模式UM ...

  5. 02python开发之基本运算符

    02 python开发之基本运算符 目录 02 python开发之基本运算符 2 基本运算符 2.1 算数运算符 2.1.1 种类 2.1.2 用法 2.2 比较运算符 2.2.1 种类 2.2.2 ...

  6. 有什么数据恢复软件可以恢复CF数据

    虽然现在SD卡出现并且日益流行,但是CF卡(Compact Flash)作为一种存储设备,仍然是专业数码相机的主流标准.不仅是数码相机,CF接口还广泛用于PDA.笔记本电脑和包括台式机在内的各种设备. ...

  7. Java基础教程——线程通信

    线程通信:等待.唤醒 Object方法 这些方法在拥有资源时才能调用 notify 唤醒某个线程.唤醒后不是立马执行,而是等CPU分配 wait 等待,释放锁,不占用CPU资源 notifyAll 唤 ...

  8. mq中nio

    MappedFile#appendMessagesInner

  9. Debian10快速部署DHCP服务

    前言 DHCP(动态主机配置协议)是一个局域网的网络协议.指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码. 进日,想提升一下自己的技术水平,于是就做 ...

  10. SpringIOC循环依赖

    目录 1. 什么是循环依赖 注意: 这⾥不是函数的循环调⽤,是对象的相互依赖关系. 循环调⽤其实就是⼀个死循环,除⾮有终结 条件. 2. 循环依赖处理机制 2.1 演示场景: 2.2 处理机制简图 总 ...