目录
  • 1. AOP概述
  • 2. 基本概念(*)
  • 3. 主要特性
  • 4. 与OOP的区别
  • 5. 实现方式
  • 6. Spring 通知的 5 种类型实现
  • 7. 使用 AspectJ 开发 AOP – XML
  • 8. 使用 AspectJ 开发 AOP – Annotation
  • 5. 总结


1. AOP概述

百度百科说,在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。

同时,AOP是一种编程范式,旨在通过分离横切关注点(cross-cutting concerns)来增强面向对象编程(OOP)的模块化和可维护性。以下是对AOP的详细介绍:

2. 基本概念(*)

【Spring全家桶系列之初识篇 | Spring 框架】第四章 面向切面编程AOP_spring

3. 主要特性

  • 增强模块化:通过将横切关注点封装在独立的方面中,AOP增强了程序的模块化。这有助于将业务逻辑与横切关注点分离,使代码更加清晰、简洁。
  • 提高代码重用性:AOP允许将横切关注点的逻辑集中在方面中,并在多个模块中复用,从而减少代码重复,提高代码重用性。
  • 增强可维护性:通过分离关注点,AOP使得程序的各个部分更加独立,便于修改和维护。

4. 与OOP的区别

  • 目标差异
    OOP针对业务处理过程的实体及其属性和行为进行抽象封装,以获得更加清晰高效的逻辑单元划分;
    而AOP则是针对业务处理过程中的切面进行提取,以获得逻辑过程中各部分之间低耦合性的隔离效果。
  • 应用实例:对于“雇员”这样的业务实体进行封装,是OOP的任务;而日志记录、性能统计、安全控制等横切关注点,则更适合通过AOP来处理。

5. 实现方式

AOP可以通过预编译方式运行期间动态代理实现程序功能的统一维护。在AOP的实现方式中,通常使用运行期间动态代理(如Java中的Spring AOP框架)来动态地将通知切入到目标方法的执行过程中。这种实现方式允许在运行时动态地将横切关注点(cross-cutting concerns)织入到指定的连接点(join point)中。

下面是Spring 通知的 5 种类型:

【Spring全家桶系列之初识篇 | Spring 框架】第四章 面向切面编程AOP_ioc_02

6. Spring 通知的 5 种类型实现

待更新…

7. 使用 AspectJ 开发 AOP – XML

待更新…

8. 使用 AspectJ 开发 AOP – Annotation

待更新…

Spring AOP开发案例提前看:
见视频【轻松搞定Spring全家桶—初识篇】

5. 总结

面向方面编程(AOP)是一种强大的编程范式,通过分离横切关注点,它提高了面向对象编程的模块化和可维护性。利用AOP,开发者可以更轻松地处理日志记录、安全性、事务管理等横切关注点,从而提高代码质量和开发效率。