Spring5-AOP
阿新 • • 發佈:2021-08-09
1.AOP(概念)
- 什麼是AOP
(1)面向切面程式設計(方面),利用AOP可以對業務邏輯各個部分進行隔離,降低耦合度,方便開發.
(2)通俗描述: 不通過修改原始碼,在主幹功能裡新增新功能.
2.AOP(底層原理)
- AOP底層使用動態代理
Spring5已將動態代理程式碼進行封裝,我們只需最簡單方式進行配置即可
兩種情況動態代理:
-
有介面: 使用JDK動態代理:
創造介面實現類代理物件(不是new出來的),通過代理物件來實現增強功能 -
無介面: 使用CGLIB動態代理
建立當前類子類的代理物件(不是new出來的),通過代理物件來實現增強功能
3.AOP(JDK動態代理)
-
需要使用java.lang.reflect.Proxy類裡面的方法來建立代理物件
(1)呼叫newProxyInstance(ClassLoader, 類<?>, InvocationHandler)方法
引數一: 類載入器
引數二: 增強方法所在的類,這個類實現的介面,支援多個介面
引數三: 實現這個介面InvocationHandler,建立代理物件,實現增強方法 -
JDK動態代理程式碼
(1) 建立介面,定義方法
eg.
public interface UserDan {
public int add(int a, int b);
public void update(String id);
}
(2) 建立介面實現類
public class UserDanIa implements UserDan{
@Override
public int add(int a, int b) {
return 0;
}
@Override
public void update(String id) {
}
}
(3) 使用Proxy類建立介面代理物件