Spring AOP 源码初窥(一) 概念

AOP是什么

AOP全称 Aspect-Oriented Programming 即面向切面编程。怎么样,是否是感受很熟悉?对,相似的还有面向过程编程(Procedure-Oriented Programming),面向对象编程(Object-Oriented Programming)。若是对后面两种编程方式有必定的了解,那么对于AOP想必也就比较容易理解了。html

就像面向对象编程,关注点在于对象,即。而面向切面编程理所固然关注于切面,那么什么是切面?能够理解为程序执行时的某个节点,或更具体一点,在某个方法执行以前执行以后返回以后等其它节点。java

几个概念的区别

1. AspectJ

AspectJ是一个基于Java语言的AOP框架,它采用编译时加强,会将加强目标编译获得一个新的AOP代理类。正则表达式

2. Spring AOP

Spring提供的AOP框架,使用了和AspectJ同样的注解,可是经过动态生成代理类的方式生成AOP代理类。spring

3. JDK Dynamic AOP

Spring AOP中AOP代理的一种实现,使用原生JDK反射和动态代理生成AOP代理,须要代理类与目标实现相同的接口。编程

4. CGLib AOP

Spring AOP中AOP代理的另外一种实现,使用CGLib动态生成AOP代理类,须要代理类为目标类的子类。框架

AOP术语

1. Aspect

一个切面,能够理解为一个切面模块,将相关的加强内容写进同一个切面。例如:一个负责日志的切面。代理

2. Join Point

表明能够由AOP加强织入的程序执行节点。日志

3. Advice

所要作的加强处理htm

4. Pointcut

切入点,定义了将被Advice加强的一个或多个Join Point,可使用正则表达式或模式匹配。对象

5. Target object

被加强的目标对象

Adivce的种类

1. Before

方法执行以前

2. After

方法执行以后

3. After-returning

方法成功执行完成以后

4. After-throwing

方法抛出异常以后

5. Around

环绕方法执行的整个周期

参考连接

相关文章
相关标签/搜索