• 动态代理(cglib与jdk)


    ​📒个人主页:热爱生活的李📒
    ​❤️感谢大家阅读本文,同时欢迎访问本人主页查看更多文章​❤️
    🙏本人也在学习阶段,如若发现问题,请告知,非常感谢🙏

    动态代理

    代理类在程序运行时创建的代理方式被称为动态代理
    静态代理中,代理类是自己定义好的,在程序运行之前就已经编译完成。然而动态代理,代理类并不是在Java代码中定义的,而是运行时根据我们在Java代码中的指示动态生成的。相比较静态代理,动态代理的优势在于可以很方便的对代理类的函数进行统一的处理,而不用修改每个代理类中的方法,比如想要在每个代理方法前都加上一个处理方法,静态代理就需要在每个类内部加上这个方法

    静态代理与动态代理的区别

    静态代理

    优点
    简单、效率高、容易理解
    缺点
    当目标类增多,代理类也需要增加
    当接口方法增加或修改的时候,很多类都需要修改,因为目标类和代理类都实现了相同的接口

    动态代理

    优点
    动态代理中的目标类很多的时候代理类的数量可以很少
    修改接口的方法的时候不会影响到代理类
    代理类可以自动帮助我们生成无需手动

    JDK动态代理

    JDK动态代理是基于反射机制,生成一个实现代理接口的匿名类,然后重写方法进行方法增强。在调用具体方法前通过调用InvokeHandler的invoke方法来处理。
    他的特点是生成代理类的速度很快,但是运行时调用方法操作会比较慢,因为是基于反射机制的,而且只能针对接口编程,即目标对象要实现接口

    public interface Person {
       
        void sayHi();
    }
    
    • 1
    • 2
    • 3
    • 4
    public class Student implements Person{
       
        @Override
        public void sayHi() {
       
            System.out.println("Hi 我是一名学生");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    public class JDKProxy implements InvocationHandler {
       
        Object target;
        public Object newProxy(Object obj){
       
            this
    • 1
    • 2
    • 3
    • 4
    • 5
  • 相关阅读:
    uni-app复制功能
    可靠的可视化监控平台应用在那些场景?
    tomcat 部署及优化
    C++ STL 概述_严丝合缝的合作者们
    cms之wordpress安装教程
    docker - window Docker Desktop升级
    归并排序和直接插入排序结合的排序算法
    2022“杭电杯” 中国大学生算法设计超级联赛(7)2 3 6 8 题解
    在 Visual Studio 2022 中使用文件对比
    C-13 循环语句while
  • 原文地址:https://blog.csdn.net/weixin_51538712/article/details/127555557