使用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,可以跳过本章的大部分内容。