面向方面的编程 (AOP) 通过以下方式补充面向对象编程 (OOP) 提供了另一种思考程序结构的方式。模块化的关键单元 在 OOP 中是类,而在 AOP 中,模块化的单位是方面。方面 实现跨领域关注点(如事务管理)的模块化 多种类型和对象。(这种关切通常被称为“跨领域”关切 在 AOP 文献中。

Spring 的关键组件之一是 AOP 框架。虽然春季 IoC container 不依赖于 AOP(这意味着如果你不想,你不需要使用 AOP to),AOP 补充了 Spring IoC,提供了一个非常强大的中间件解决方案。

带有 AspectJ 点切口的 Spring AOP

Spring 通过使用基于模式的方法@AspectJ注解样式,提供了编写自定义方面的简单而强大的方法。 这两种风格都提供了完全类型的建议和 AspectJ pointcut 语言的使用 同时仍然使用 Spring AOP 进行编织。

本章讨论基于架构和@AspectJ的 AOP 支持。 下一章将讨论较低级别的 AOP 支持。

AOP 在 Spring 框架中用于:

  • 提供声明式企业服务。最重要的此类服务是声明式事务管理

  • 让用户实现自定义方面,用 AOP 补充他们对 OOP 的使用。

如果您只对通用声明性服务或其他预打包服务感兴趣 声明式中间件服务,如池化,你不需要直接使用 Spring AOP,并且可以跳过本章的大部分内容。