一、反射

二、动态代理

Q:什么情况下用

A:

1、如果别人提供了一个class文件或jar包给你,你自己的代码已经写好了,但是同时又需要用别人提供的class文件中的方法,这个时候可以使用动态代理

2、spring的AOP,在执行一个方法之前或执行之后,需要调用其它方法

Q:执行流程

A:(类A实现接口B,类A动态生成代理C,客户端通过代理C访问A,其实也是应用了反射方法和技术)

3、经典实现

RMI是动态代理的经典实现之一,服务端生成动态代理类stub,stub代理客户端请求服务端,服务端返回结果

三、动态代理经典体现:获取数据库连接

四、

JAVA动态性_JAVA动态性

五、

JDK动态代理拥有局限性,那就是必须面向接口编程,没有接口就无法实现代理,我们也不可能为了代理而为每个需要实现代理的类强行添加毫无意义的接口,这时我们需要Cglib,这种依靠继承来实现动态代理的方式,不再要求我们必须要有接口

JAVA动态性_JAVA动态性_02