一 、動態代理的優點
1.它不用去關心被代理的類到底是怎樣的,可以與被代理的類完全解耦,從而靈活的運用到不同的應用場景中。
2.業務代碼內,當需要增強的業務邏輯非常通用(如:添加log,重試,統一權限判斷等)時,使用動態代理將會非常簡單。即使業務邏輯實現的接口不同,也不需要修改或者新增代理類。如果每個方法增強邏輯不同,那麼靜態代理更加適合。
3.使用靜態代理時,如果代理類和被代理類同時實現了一個接口,當接口方法有變動時,代理類也必須同時修改。
二、AOP織入代碼的時機
1,編譯時織入,代表技術:AspectJ
2.類加載時織入,代表技術:Aspect5+
3.運行時織入,代表技術:Spring AOP,運行時織入使用了動態代理
三、動態代理的兩種實現方式:
1.jdk動態代理,基於接口
2.cglib動態代理,基於繼承