spring之AOP

AOP框架将分散在系统中的功能块放到一个地方-------> 切面。
Spring生来支持AOP,首先来看几个概念:
 * 切面(Aspect):实现交叉的非核心业务。
 * 通知(Advice):通知是切面的具体实现。也就是说你的切面要完成什么功能,具体怎么做就是在通知里面完成的。
 * 切入点(Pointcut):连接点集合中被触发的点,也就是说真正织入切面的地方(切入点定义了通知应该应用到系统的哪些地方)。
 * 连接点(Joinpoint):可能织入切面的地方。
 * 目标对象(Target):目标对象是被通知的对象。
 * 代理(Proxy):代理就是将通知应用到目标对象后产生的对象。
  --->在Spring AOP中有两种代理方式,JDK动态代理和CGLIB代理。默认情况下,TargetObject实现了接口时,则采用JDK动态代理,例如,AServiceImpl;反之,采用CGLIB代理,例如,BServiceImpl。强制使用CGLIB代理需要将 <aop:config> 的 proxy-target-class 属性设为true
 * 织入(weaving):将切面就用到目标对象中创建一个代理对象的过程。
 
通知(Advice)类型
 * 前置通知(Before advice) :在某连接点(JoinPoint)之前执行的通知,但这个通知不能阻止连接点前的执行。ApplicationContext中在<aop:aspect>里面使用<aop:before>元素进行声明。 实现接口:org.springframework.aop.MethodBeforeAdvice
 * 后通知(After advice) :当某连接点退出的时候执行的通知(不论是正常返回还是异常退出)。ApplicationContext中在<aop:aspect>里面使用<aop:after>元素进行声明。实现接口:org.springframework.aop.AfterReturningAdvice
 * 返回后通知(After return advice) :在某连接点正常完成后执行的通知,不包括抛出异常的情况。ApplicationContext中在<aop:aspect>里面使用<after-returning>元素进行声明。 实现接口:
 * 环绕通知(Around advice) :包围一个连接点的通知,类似Web中Servlet规范中的Filter的doFilter方法。可以在方法的调用前后完成自定义的行为,也可以选择不执行。ApplicationContext中在<aop:aspect>里面使用<aop:around>元素进行声明。实现接口:org.aopalliance.intercept.MethodInterceptor
 * 抛出异常后通知(After throwing advice) : 在方法抛出异常退出时执行的通知。 ApplicationContext中在<aop:aspect>里面使用<aop:after-throwing>元素进行声明。实现接口:org.springframework.aop.ThrowsAdvice

你可能感兴趣的:(spring,jdk,AOP,框架,servlet)