首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

spring aop兑现机制 小结

2012-09-19 
spring aop实现机制 小结最近在看spring aop,自己这几天稍微小小总结下,以便于以后万一忘记了可以在这里看

spring aop实现机制 小结
      最近在看spring aop,自己这几天稍微小小总结下,以便于以后万一忘记了可以在这里看看,温习温习。
      
      aop大家都不陌生就是面向切面编程。
      aop里的各种名词包括Joinpoint(拦截点),pointcut(拦截表达式),advice(切入的逻辑)。通俗一点就是每个pointcut表达式都会对应一些joinpoint拦截点,然后对应这些拦截点织入相应的advice。就这样。
      springAOP现方式大类可以分成静态织入和动态织入。
      静态织入就是在编译期,切面的代码直接编译到目标字节码里,这样虽然对系统的性能没有影响,但是灵活性不够。
      而动态织入的aop的机制就比较多了。
     1. 动态代理。是在运行期,目标类加载后,为接口动态生成代理类,将切面的逻辑通过代理接口加入到子类中。但是唯一的缺点是关注点是接口,对系统有一点点性能的影响。(springAOP默认机制)
     2.动态字节码生成。在运行期,目标类加载后,动态构建字节码文件生成目标类的子类,将切面逻辑加入到子类中。缺点是扩展类的实例如果有final时,无法进行织入。cglib是该方法的实现机制。
     3.自定义类加载器。在运行期,目标类加载前,将切面逻辑加入到目标字节码里。缺点是代码中如果使用了其他类加载器,那么被其他类加载器加载的类将不会被织入切面逻辑。
     4.字节码转换。在运行期,所有类加载器加载字节码前,进行拦截织入。

热点排行