使用 Spring 进行面向切面编程

面向方面编程 (AOP) 通过提供另一种思考程序结构的方式来补充面向对象编程 (OOP)。OOP 中模块化的关键单元是类,而在 AOP 中模块化的单元是方面。方面使跨多个类型和对象的关注点(例如事务管理)模块化成为可能。(此类关注点在 AOP 文献中通常称为“横切”关注点。)

Spring 的关键组件之一是 AOP 框架。虽然 Spring IoC 容器不依赖于 AOP(这意味着如果你不想使用 AOP,则不必使用它),但 AOP 补充了 Spring IoC,以提供非常有能力的中间件解决方案。

带 AspectJ 切入点的 Spring AOP

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

本章讨论基于模式和 @AspectJ 的 AOP 支持。较低级别的 AOP 支持在 下一章 中讨论。

AOP 在 Spring 框架中用于

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

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

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