Spring Framework 7.024.Spring 中的面向切面编程(一)
面向切面编程(AOP)通过提供另一种思考程序结构的方式,对面向对象编程(OOP)进行了补充。OOP 中模块化的关键单元是类,而在 AOP 中,模块化的单元是切面。切面能够将跨越多个类型和对象的关注点(例如事务管理)进行模块化。(在 AOP 文献中,这类关注点通常被称为“横切”关注点。)
Spring 的关键组件之一是 AOP 框架。虽然 Spring IoC 容器不依赖于 AOP(这意味着如果不想使用 AOP,也完全可以不使用),但 AOP 与 Spring IoC 相辅相成,共同提供了一个功能强大的中间件解决方案。
结合 AspectJ 切入点的 Spring AOP
Spring 提供了简单而强大的方式来编写自定义切面,既可以使用基于 schema 的方式,也可以使用 @AspectJ 注解风格。这两种风格都支持全类型的通知,并且能够使用 AspectJ 切入点语言,同时仍然使用 Spring AOP 进行织入。
本章将讨论基于 schema 和 @AspectJ 的 AOP 支持。更低级别的 AOP 支持将在下一章中讨论。
AOP 在 Spring 框架中的应用场景包括:
- 提供声明式企业服务。其中最重要的服务是声明式事务管理。
- 允许用户实现自定义切面,通过 AOP 对 OOP 的使用进行补充。