首页 > 代码库 > Spring 4 官方文档学习(六)核心技术之Spring AOP
Spring 4 官方文档学习(六)核心技术之Spring AOP
1、介绍
Aspect-Oriented Programming (AOP),是对OOP的补充。OOP的关键是class,AOP的关键是aspect。
Spring 2.0 引入了更简单但更强大的自定义aspect的方式,可以使用 a schema-based approach 也可以使用 the @AspectJ annotation style 。注意,虽然是使用了AspectJ pointcut语言,但底层仍然是Spring来编织(weaving)。
Spring框架使用AOP来完成以下功能:
- 提供声明式服务。其中最重要的是声明式事务管理。
- 允许用户自定义aspect,进行AOP编程。
1.1、AOP 概念
先来定义一些关键概念和术语。这些说法不是Spring独有的,而且,不幸的是,AOP术语不是那么直观。
Aspect:从多个类中切过去的一个概念。事务管理是个好例子。在Spring AOP中,aspect要么使用常规类实现--(the schema-based approach),要么使用@Aspect注解实现--(the @AspectJ
style)。
Join point:一个program执行过程的一个点,例如一个方法的执行或者一个异常的处理。注意,在Spring AOP中,一个join point 总是描述一个方法的执行。
Advice:aspect在一个特定的join point执行的操作。advice有不同类型:around、before、after。许多AOP框架,包括Spring,利用advice做成拦截器(interceptor) ,围绕join point维护了一组拦截器。
Pointcut:匹配join point的描述。advice关联了一个pointcut expression,会在任何匹配pointcut expression的join point执行。--例如执行一个具有特定名字的方法!注意:匹配pointcut expression的join point,这个概念是AOP的核心。默认,Spring使用AspectJ pointcut expression语言。
Introduction:为一个类型声明额外的方法或字段。Spring AOP允许你给 任意advised object 引入新的接口(及其实现)。例如,你可以使用introduction来让一个bean实现 IsModified 接口来简化缓存(~~ 就是加一个标志位)。
Target object:object being advised by one or more aspects. 也被叫做 advised object。因为Spring AOP是使用runtime proxies实现的,该object也是一个 proxied object。
AOP proxy:AOP框架创建的一个object,用于实现aspect功能(advise method execution等)。在Spring框架中,AOP proxy是JDK dynamic proxy 或者 CGLIB proxy。
Weaving:将aspects与其他类型或对象链接起来,以创建一个advised object。可以在编译时(例如,使用AspectJ编译器)、加载时、或者运行时完成。Spring AOP是在运行时 --和其他纯Java的AOP框架一样。
Spring 4 官方文档学习(六)核心技术之Spring AOP