1 代理 (用來進行類的增強 和service實現類一樣都繼承相同的接口)
靜態代理---------創建一個代理類,運行之前就已經確定了代理某個service實現類
動態代理---------不需要創建代理類,通過工廠產生代理對象,在運行時才生成代理
jdk動態代理:target=Proxy.newProxyInstance(target.getClass().getClassLoader()目標類加載器,
目標類實現的接口target.getClass().getInterfaces(),
new InvocationHandler(){
public Object invoke(Object proxy,Method method 目標方法,Objects[] args目標方法參數){
method.invoke(target 這個引用外部類的變量必須是final修飾的,args);}
}內部匿名類,增強在這裏面完成)
CGLib動態代理(code generation lib):jdk動態代理要求目標類實現相同的接口,若目標不存在接口,則無法使用該方式實現。GBLib不需要實現接口,底層是生成一個目標類的子類來增強,所以目標類必須可繼承,不能用final修飾。
2反射