Java代理 - jdk动态代理 VS cglib动态代理

Read more   2017/10/25 posted in  Java Proxy

Java代理 - cglib 动态代理

jdk 的动态代理要求目标类必须实现接口,当一个目标类不实现接口时,jdk 是无法为其提供动态代理的。

然而,cglib 却能给这样的类提供动态代理。
Spring 在给某个类提供动态代理时会根据配置文件的条件在 jdk 动态代理和 cglib 动态代理中选择。

Read more   2017/10/25 posted in  Java Proxy

Java代理 - jdk动态代理实现原理深入分析

Read more   2017/10/25 posted in  Java Proxy

Java代理 - jdk动态代理

静态代理要为每个目标类创建一个代理类,当需要代理的类太多,那么代理类也变得很多,这是无法想象的。

好在 jdk 给我们提供了动态代理,jdk 的动态代理要求目标类必须实现接口,因为它创建代理对象的时候是根据接口创建的,如果不实现接口,jdk 无法给目标类创建代理类。被代理类(目标类)可以实现多个接口。

Read more   2017/10/25 posted in  Java Proxy

Java代理 - jdk静态代理

  • 用法
    • 代理类和目标类都实现相同的接口
    • 代理类持有目标类的引用
  • 缺点
    • 需要建立大量的代理类 ``
Read more   2017/10/25 posted in  Java Proxy

Java代理 - 介绍

举个生活中的例子,有一个工厂,生产手机的,它可以有许多代理,比如一级代理等等。用户不直接从工厂买手机,而是从代理那里买手机。工厂给代理商的价格是2000元,代理商经过处理之后,加了500元,给用户的价格是2500元。

对比Java来说,工厂有一个类里面有个sale() 方法,返回价格是2000元,代理商在不修改工厂那个类的源代码的前提下把那个类包裹了一下,在执行 sale() 方法时加入了一些东西,比如提价500元,这样用户看到的返回结果就是提价之后的价格2500元。

就是,代理商的类(代理类)代理了工厂的类(目标类,也叫做被代理类),加入了额外的代码。

Read more   2017/10/25 posted in  Java Proxy