简单理解AOP(面向切面编程)

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

  AOP与OOP是面向不一样领域的两种设计思想。正则表达式

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

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

  咱们能够单单从上面的字面上来理解AOP和OOP的话,用下面的理解也不为过:框架

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

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

  • 方面(Aspect):一个关注点的模块化,这个关注点实现可能另外横切多个对象。事务管理是J2EE应用中一个很好的横切关注点例子。方面用Spring的Advisor或拦截器实现。.net

  • 链接点(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 容器负责管理。

与AOP相关文章连接:http://blog.csdn.net/liujiahan629629/article/details/18864211

相关文章
相关标签/搜索