spring AOP (7) 基础知识-增强

前面我们说过jdk代理和cglib代理了,研究表明,谁研究的我也不知道哈,

cglib所创建的动态代理对象的性能比jdk所创建的动态代理对象的性能高很多(10倍左右),但cglib在创建动态代理对象时所花费的时间比jdk要多(8倍),,所以对于单实例的代理对象或者具有实例池的代理对象,因为不需要频繁的创建代理对象,所以比较适用cglib动态代理对象;需要频繁的创建代理对象的,则适合用jdk动态代理对象。

spring两种技术都运用了。

 

增强:spring 适用它来创建横切逻辑(比如事务),spring只支持方法连接点,所以增强既包含了横切逻辑代码,也包含了连接点的部分信息(即在方法的哪一点加入横切代码--方位信息)。

spring的增强都实现了org.aopalliance.aop.Advice接口,支持5种类型的增强。

①org.springframework.aop.BeforeAdvice;

前置增强,org.springframework.aop.MethodBeforeAdvice是目前可以用的前置增强,意思是在目标类的方法前织入增强。

②org.springframework.aop.AfterReturningAdvice;

后置增强,意思是在目标方法执行后织入增强。

③org.springframework.aop.ThrowsAdvice;

抛出异常增强,意思是在目标抛出异常后织入增强。

④org.aopalliance.intercept.MethodInterceptor;

环绕增强,意思是在方法执行前后织入增强。

⑤org.springframework.aop.IntroductionInterceptor;

引介增强,意思是在目标类中添加新的方法或者属性。

你可能感兴趣的:(spring aop)