动态代理的意义在于生成一个占位,代理真实对象,从而控制正式对象的访问。代理的作用是在真实对象访问之前或者之后加入对应的逻辑,或者根据其他的规则控制是否使用真实对象。代理需分为两步:代理对象和真实对象建立代理关系;实现代理对象的代理逻辑方法。在java中有多种动态代理机制,如JDK、CGLIB、Javassist等。
1. JDK动态代理
该方法需要借助一个接口才能产生代理对象,首先定义接口:
随后提供实现类来实现接口:
在JDK动态代理中,实现代理逻辑类必须实现java.lang.reflect.InvocationHandler接口,其里面定义一个invoke方法,并提供接口数组用于下挂代理对象。