Spring学习笔记3——AOP

AOP概述

  1. AOPAspect-Oriented Programming(面向切面编程)的简称Aspect是一种新的模块化机制,用来描述分散在对象、类或函数中的横切关注点(crosscutting concern)。从关注点中分离出横切关注点是面向切面的程序设计的核心概念。分离关注点使解决特定领域问题的代码从业务逻辑中独立出来,业务逻辑的代码中不再含有针对特定领域问题代码的调用,业务逻辑同特定领域问题的关系通过切面来封装、维护,这样原本分散在整个应用程序中的变动就可以很好地管理起来。

  2. 虽然利用面向对象的方法可以很好地组织代码,也可以通过继承关系实现代码重用,但是程序中总是会出现一些重复的代码,而且不太方便使用继承的方法把它们重用和管理起来。它们功能重复并且需要用在不同的地方,虽然可以对这些代码做一些简单的封装,使之成为公共函数,但是在这种显式的调用中,使用它们并不是很方便。另外,在使用这些公共函数的时候,往往也需要进行一些逻辑设计,也就是需要代码实现来支持,而这些逻辑代码也是需要维护的。这时就是AOP大显身手的时候,使用AOP后,不仅可以将这些重复的代码抽取出来单独维护,在需要使用时统一调用,还可以为如何使用这些公共代码提供丰富灵活的手段。这与设计公共子模块有几分相似,但在传统的公共子模块调用中,除了直接硬调用之外并没有其他的手段,而AOP为处理这一类问题提供了一套完整的理论和灵活多样的实现方法,来实现切面应用的各种编织实现和环绕增强。

  3. AOP体系结构把与AOP相关的概念大致分为由高到低、从使用到实现的三个层次:
    Spring学习笔记3——AOP_第1张图片

    • 基础(base):可以视为待增强对象或者说目标对象
    • 切面(aspect):通常包含对于基础的增强应用
    • 配置(configuration):可以看成是一种编织,通过在AOP体系中提供这个配置环境,可以把基础和切面结合起来,从而完成切面对目标对象的编织实现
    • 第二个层次是为语言和开发环境提供支持的,在这个层次中可以看到AOP框架的高层实现,主要包括配置和编织实现两部分内容。例如配置逻辑和编织逻辑实现本身,以及对这些实现进行抽象的一些高层API封装。这些实现和API封装,为前面提到的语言和开发环境的实现提供了有力的支持。
    • 最底层是编织的具体实现模块,其中的各种技术都可以作为编织逻辑的具体实现方法,比如反射、程序预处理、拦截器框架、类装载器框架、元数据处理等。在Spring AOP中,使用的是Java本身的语言特性,如Java Proxy代理类、拦截器等技术,来完成AOP编织的实现。
  4. 对Spring平台或者说生态系统来说,AOP是Spring框架的核心功能模块之一。AOP与IoC容器的结合使用,为应用开发或Spring自身功能的扩展都提供了许多便利。Spring AOP的实现和其他特性的实现一样,除了可以使用Spring本身提供的AOP实现之外,还封装了业界优秀的AOP解决方案AspectJ来供应用使用。

  5. 在Spring自身的AOP实现中,Spring充分利用了IoC容器Proxy代理对象以及AOP拦截器的功能特性,通过这些对AOP的基本功能的封装机制,为用户提供了AOP的实现框架。

  6. Advice(通知)定义在连接点做什么,为切面增强提供织入接口。

你可能感兴趣的:(Spring,spring)