Java代理有以下几种方式:
-
静态代理:在代理类中直接引用被代理类的对象,通过代理类对被代理类的方法进行调用和控制。
-
动态代理:通过Java的反射机制,在运行时动态生成代理类,代理类实现了被代理类的接口,并在方法中调用被代理类的方法。
-
CGLIB代理:通过字节码技术,在运行时生成被代理类的子类,并重写被代理类的方法,实现对被代理类的代理。
-
JDK动态代理:通过代理类实现InvocationHandler接口,实现invoke方法来对被代理类的方法进行代理,动态代理只能代理实现了接口的类。