天天看點

cglib動态代理(cglib動态代理實作原理)

關于java動态代理和cglib動态代理的差別

JDK動态代理要求被代理的類必須實作一個接口,而CGLIB代理不要求被代理類實作某個接口,CGLIG代理則是給代理類生成一個子類,通過操作子類實作代理代理可以分為動态代理和靜态代理。然後java動态代理和cglib動态代理都屬于動态代碼。他們2個的主要差別在于:jdk動态代理隻能對實作了接口的類生成代理,而不能針對類 ;cglib是針對類實作代理,主要是對指定的類生成一個子類,覆寫其中的方法 ;因為是繼承,是以該類或方法最好不要聲明成final ,final可以阻止繼承和多态。

java cglib 調用代理類的方法

一、類的分類:

1、普通類

2、抽象類(含有抽象方法的類)

3、靜态類(不需要執行個體化,就可以使用的類)

二、方法的分類:

1、私有方法(隻有類的内部才可以通路的方法)

2、保護方法(隻有類的内部和該類的子類可以通路的方法)

3、共有方法(無論内部或外部均可通路的方法)

4、靜态方法(可以不執行個體話對象,通過類名.方法就可以調用的方法)

5、抽象方法(隻有方法的簽名而沒有實作的方法)

三、方法的調用:

1、普通類:執行個體化一個該類的對象,然後通過對像通路。例如:

class A {

public void method1(){

System.out.println("我是A類的方法1");

}

public static void main(String[] args){

A a=new A();

a.method1();

2、靜态類:可以通過類名直接通路,而不用執行個體化對象。例如:

class static A {

public static void method1(){

System.out.println("我是A類的方法1");

}