關于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");
}