Java代理【图文教程】_第1章_静态代理

平凡也就两个字: 懒和惰;
成功也就两个字: 苦和勤;
优秀也就两个字: 你和我。
跟着我从0学习JAVA、spring全家桶和linux运维等知识,带你从懵懂少年走向人生巅峰,迎娶白富美!
关注微信公众号【 IT特靠谱 】,每一篇文章都是心得总结,跟我学习你就是大牛!

Java代理【图文教程】_第1章

---静态代理

 java代理简介

Java代理有3种方式:(1)静态代理;(2) jdk动态代理;(3)cglib动态代理。

名称解释:(1)代理类:需要创建的代理类;(2)委托类:被代理类。

静态代理和动态代理:

         (1)静态代理:由程序员或者自动生成工具生成代理类,然后进行代理类的编译和运行。在代理类、委托类运行之前,代理类已经以.class的格式存在。也就是说代理类是编译java代码之前就写好了!

         (2)动态代理:相比于静态代理,动态代理避免了我们编写各个繁琐的静态代理类,只是简单地指定一组接口及目标对象(被代理对象)就能动态生成被代理对象的代理对象。在程序运行时,动态代理对象由反射机制动态创建而成。

Jdk动态代理和cglib动态代理:Jdk动态代理和cglib动态代理是两种动态代理的实现方式。一般情况下实现接口的委托类的代理类,用jdk动态代理创建代理,未实现接口的委托类,则用cglib动态代理来创建委托类的代理类。

        (1)Jdk动态代理:jdk中对jdk动态代理提供了默认支持;

        (2)cglib动态代理: jdk中不支持cglib动态代理,需要引入cglib的jar包才能使用cglib动态代理(spring-core依赖中包含了cglib,引入spring-core也提供了对cglib的支持)。

2 静态代理

2.1 静态代理实现步骤

      (1)定义一个接口或抽象类(ISubject);

      (2)定义委托类(RealSubject)并实现ISubject接口或抽象类;

      (3)定义代理类(RealSubjectProxy),同样实现ISubject接口或抽象类;

               - 代理类中定义一个委托类引用的属性;

               - 代理类的带参构造方法中给委托类属性赋值为委托类对象;

               - 代理类实现的ISubject接口方法sayHello()中调用委托类对象的sayHello()方法,并可在代理类的sayHello()方法中编写增强代码。

      (4)测试静态代理。

2.2 代码实战

定义接口:ISubject.java

定义委托类:SubjectImpl.java

定义代理类:SubjectProxy.java

测试类:Main.java

      静态代理类需要手工去创建,并且每个委托类都对应一个代理类!编写和维护起来非常麻烦!!But,动态代理方式能解决!

下一章节将详细讲解java动态代理!敬请关注~

        如果以上教程对您有帮助,为了不迷路,请关注一下吧~

猜你喜欢

转载自blog.csdn.net/IT_Most/article/details/108804921
今日推荐