AOP:AspectJ Orient Programming,面向切面编程,将程序分成了多个不同的切面来进行编程。AOP从程序的运行角度来考虑程序的流程,提取业务处理过程的切面。AOP面向的是程序运行中各个步骤,AOP框架不与特定的代码耦合,他能处理程序执行中特定的切入点,AOP框架有两种特征:
1>各步骤之间的良好隔离性
2>源代码无关性
AOP的一些术语:
切面Aspect:用于组织多个advice,Advice在切面中定义
连接点JoinPoint:程序执行过程中明确的点,如方法的调用或者异常的抛出。在Spring AOP中总是指方法的调用,使用JoinPoint可以获取目标方法的相关信息
增强处理Advice:AOP框架在特定的切入点执行的增强处理,常用的处理有:Before、After、Around、AfterReturning等等
切入点Pointcut:可以插入增强处理的连接点。满足某种条件的方法如:
"execution(* *.*.*(..))"。这表示所有方法都可以作为连接点
目标对象:被AOP框架进行增强处理的对象
AOP代理:AOP框架创建的对象,AOP代理就是对目标对象的增强。Spring中的AOP代理可以是JDK动态代理,也可以是cglib代理。前者为实现接口的目标对象的代理,后者为不实现接口的目标对象的代理
织入Weaving:将增强处理添加到目标对象中,并创建一个被增强的对象的过程就是织入。织入有两种实现方式 - 编译时增强AspectJ和运行时增强Spring AOP