美文网首页
Spring(5) -(12)动态代理的总结

Spring(5) -(12)动态代理的总结

作者: 小白201808 | 来源:发表于2018-09-26 09:37 被阅读0次

    1.jdk动态代理总结:

    1.java 动态代理是使用java.lang.reflect包中的proxy类与invocationHander接口这俩来完成
    2.要使用jdk 动态代理,委托必须要定义接口
    3.jdk动态代理将拦截所有public的方法(因为只能调用接口中的定义方法)这样即使在接口中添加了新的方法。不用修改代码也能拦截
    4.动态代理的最小单位是类*(所有类中的方法都会被处理),如果想要拦截一部分的方法,可以在invoke方法中对要执行的方法名进行判断
    

    4.CGLIB动态代理

     1.CGLIB可以生成委托类的子类,并重写父类中的非final修饰的方法
     2.要求类不能是final的,要拦截的方法也要是非fianl,非static ,非private的
     3.动态代理的最小单位是类
    

    关于性能

    jdk动态代理基于实现接口的,CGLIB和javassit是基于委托类的
    从性能上考虑:javassit > CGLIB > JDK
    Struct2的拦截器和Hibernate延迟加载,采用的是javassit的方式
    对接口创建代理优于对类创建代理,因为会产生更加松耦合的系统,也符合面向接口编程规范,所以优先考虑jdk动态代理。
    

    相关文章

      网友评论

          本文标题:Spring(5) -(12)动态代理的总结

          本文链接:https://www.haomeiwen.com/subject/rzfdoftx.html