Java代理有以下幾種方式:
靜態代理:在代理類中直接引用被代理類的對象,通過代理類對被代理類的方法進行調用和控制。
動態代理:通過Java的反射機制,在運行時動態生成代理類,代理類實現了被代理類的接口,并在方法中調用被代理類的方法。
CGLIB代理:通過字節碼技術,在運行時生成被代理類的子類,并重寫被代理類的方法,實現對被代理類的代理。
JDK動態代理:通過代理類實現InvocationHandler接口,實現invoke方法來對被代理類的方法進行代理,動態代理只能代理實現了接口的類。