面向方面编程(AOP)通过提供对程序结构的另一种思考方式来补充面向对象编程(OOP)。OOP中模块化的关键单元是类,而AOP中模块化的单元是方面。方面支持跨多个类型和对象的关注点(如事务管理)的模块化。(在AOP文献中,这种关注通常被称为“横切”关注。)
Spring的关键组件之一是AOP框架。虽然SpringIOC容器不依赖于AOP(也就是说,如果不想使用AOP,就不需要使用AOP),但是AOP补充了SpringIOC,提供了一个非常强大的中间件解决方案。
Spring AOP和AspectJ切点
Spring提供了使用基于模式的方法或@Aspectj注解样式来编写自定义方面。这两种风格都提供了完整类型的通知,并可以在使用SpringAOP进行编织的同时使用AspectJ切入点语言。
本章讨论基于 schema-和@Aspectj的AOP支持。下一章将讨论较低级别的AOP支持。
AOP在Spring框架中被使用,主要用在以下几个方面:
- 提供声明性企业服务。最重要的此类服务是声明性事务管理。
- 让用户实现自定义方面,用AOP补充OOP的使用。
如果你只对通用声明性服务或其他预打包的声明性中间件服务(如池)感兴趣,则不需要直接使用SpringAOP,可以跳过本章的大部分内容。