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 支持。

Spring 框架中使用 AOP 来

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

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

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