来源:http://www.cnblogs.com/jyh317/p/3834271.html

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

  AOP与OOP是面向不同领域的两种设计思想。

  OOP(面向对象编程)针对业务处理过程的实体及其属性行为进行抽象封装,以获得更加清晰高效的逻辑单元划分。

  AOP则是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤阶段,以获得逻辑过程中各部分之间低耦合性的隔离效果

  我们可以单单从上面的字面上来理解AOP和OOP的话,用下面的理解也不为过:

  OOP实际上是对对象的属性和行为的封装,而AOP对于这点就无从谈起,但是AOP是处理某个步骤和阶段的,从中进行切面的提取,也就是说,如果几个或更多个逻辑过程中,有重复的操作行为,AOP就可以提取出来,运用动态代理,实现程序功能的统一维护,这么说来可能太含蓄,如果说到权限判断,日志记录等,可能就明白了。如果我们单纯使用OOP,那么权限判断怎么办?在每个操作前都加入权限判断?日志记录怎么办?在每个方法里的开始、结束、异常的地方手动添加日志?所有,如果使用AOP就可以借助代理完成这些重复的操作,就能够在逻辑过程中,降低各部分之间的耦合了。二者扬长补短,互相结合最好。

  下面详细了解一些AOP的概念:

  • 方面(Aspect):一个关注点的模块化,这个关注点实现可能另外横切多个对象。事务管理是J2EE应用中一个很好的横切关注点例子。方面用Spring的Advisor或拦截器实现。
  • 连接点(Joinpoint):程序执行过程中明确的点,如方法的调用或特定的异常被抛出。
  • 通知(Advice):在特定的连接点,AOP框架执行的动作。各种类型的通知包括“around”、“before”和“throws”通知。通知类型将在下面讨论。许多AOP框架包括Spring都是以拦截器做通知模型,维护一个“围绕”连接点的拦截器链。
  • 切入点(Pointcut):指定一个通知将被引发的一系列连接点的集合。AOP框架必须允许开发者指定切入点,例如,使用正则表达式。
  • 引入(Introduction):添加方法或字段到被通知的类。Spring允许引入新的接口到任何被通知的对象。例如,你可以使用一个引入使任何对象实现IsModified接口,来简化缓存。
  • 目标对象(Target Object):包含连接点的对象,也被称作被通知或被代理对象。
  • AOP代理(AOP Proxy):AOP框架创建的对象,包含通知。在Spring中,AOP代理可以是JDK动态代理或CGLIB代理。
  • 编织(Weaving):组装方面来创建一个被通知对象。这可以在编译时完成(例如使用AspectJ编译器),也可以在运行时完成。Spring和其他纯Java AOP框架一样,在运行时完成织入。

  Spring 中 AOP 代理由 Spring 的 IoC 容器负责生成、管理,其依赖关系也由 IoC 容器负责管理。至于Spring的AOP在项目中具体是怎么实现的,下篇博客会以日志记录为例进行学习。

简单理解AOP(面向切面编程)相关推荐

  1. AOP面向切面编程之全局日志打印/统计接口耗时

    目录 一.什么是AOP 二.AOP使用场景 三.使用AOP的好处 四.先举个例子理解AOP面向切面编程 五.Spring5.X的AOP切入点表达式有这些种写法 六.实战基于Spring的AOP快速实现 ...

  2. 切面是异步还是同步操作‘_Autofac的AOP面向切面编程研究

    什么是AOP: 我的理解是 把系统性的编程工作封装起来 =>我给这个取个名字叫 "Aspect",然后通过AOP技术把它切进我们的业务逻辑代码 => "业务& ...

  3. Javascript aop(面向切面编程)之around(环绕)

    Aop又叫面向切面编程,其中"通知"是切面的具体实现,分为before(前置通知).after(后置通知).around(环绕通知),用过spring的同学肯定对它非常熟悉,而在j ...

  4. Autofac的AOP面向切面编程研究

    我的理解是 把系统性的编程工作封装起来 =>我给这个取个名字叫 "Aspect",然后通过AOP技术把它切进我们的业务逻辑代码 => "业务" 这样 ...

  5. python aop编程_学习笔记: AOP面向切面编程和C#多种实现

    AOP:面向切面编程   编程思想 OOP:一切皆对象,对象交互组成功能,功能叠加组成模块,模块叠加组成系统 类--砖头     系统--房子 类--细胞     系统--人 面向对象是非常适合做大型 ...

  6. 切入点和切入点表达式(AOP面向切面编程)

    https://blog.csdn.net/keda8997110/article/details/50747923/ AOP面向切面编程.通过预编译方式和运行期动态代理实现程序功能的统一维护的技术. ...

  7. 【SSM】Spring系列——AOP面向切面编程

    文章目录 03 AOP面向切面编程 3.1 AOP概述 3.2 面向切面编程对有什么好处 3.3 模拟AOP框架实现 3.3.1 代码实现版本一 3.3.2 代码实现版本二 3.3.3 代码实现版本三 ...

  8. PHP之AOP面向切面编程原理(2)

    在传统的编写业务逻辑处理代码时,我们通常会习惯性地做几件事情:日志记录.事务控制及权限控制等,然后才是编写核心的业务逻辑处理代码.当代码编写完成回头再看时,不禁发现,扬扬洒洒上百行代码中,真正用于核心 ...

  9. java aop面向切面编程

    最近一直在学java的spring boot,一直没有弄明白aop面向切面编程是什么意思.看到一篇文章写得很清楚,终于弄明白了,原来跟python的装饰器一样的效果.http://www.cnblog ...

  10. AOP(面向切面编程)大概了解一下

    前言 上一篇在聊MemoryCache的时候,用到了Autofac提供的拦截器进行面向切面编程,很明显能体会到其优势,既然涉及到了,那就趁热打铁,一起来探探面向切面编程. 正文 1. 概述 在软件业, ...

最新文章

  1. ThinkPHP 3.2 vendor()方法的深入研究及Phpqrcode的正确扩展
  2. 轻松高效玩转DTO(Data Transfer Object)
  3. 数据可视化组队学习:《Task04 - 文字图例尽眉目》笔记
  4. NC33-合并两个有序的链表
  5. 与专门团队一起持续交付
  6. 用子函数实现strlen.strcpy.strcat.strcmp(完整代码)
  7. 格科半导体成功引入ASML先进ArF光刻机
  8. Linux中Docker部署Nginx
  9. xml TO json(非递归实现)
  10. 面试—每日一题(5)
  11. oppo 系列手机刷机教程
  12. PHP snmpwalkoid和snmpwalk的区别,snmpwalkoid返回对象 id 及它们各自的值,snmpwalk仅返回值
  13. ntp和ptp实现_NTP/PTP时间同步入门
  14. idea使用mvn命令打包报错 不可用
  15. “2020(第二届)中国食品供应链大会”于8月27-28日在湖南长沙召开
  16. Linux whoami和who am i命令用法和区别
  17. 证件照背景色怎么换白色?这两个小技巧要掌握
  18. MBA案例分析(行销与营销之营销三)
  19. Movist for Mac(媒体播放器)
  20. YouTube多语种视频营销,低成本也能带来高收益

热门文章

  1. 使用JCrop进行图片裁剪,裁剪js说明,裁剪预览,裁剪上传,裁剪设计的图片处理的工具类和代码
  2. 基于注解的Spring MVC(所需jar包,web.xml配置,Spring文件配置,@Controller,@RequestMapping,@RequestParam,model填参,EL取值)
  3. java web项目里ehcache.xml的参数说明
  4. 线性代数之矩阵逆的微分
  5. python采用单例模式游戏_Python实现Singleton模式的方式详解
  6. 字符变量赋值规则_C#的变量、运算符
  7. 如何解决连接不上us.archive.ubuntu.com
  8. 深度学习--简述卷积层如何检测物体边缘原理
  9. MvcScaffold快速开发实例
  10. 大快网站:如何选择正确的hadoop版本