1. 程式人生 > 其它 >Spring5-AOP

Spring5-AOP

1.AOP(概念)

  • 什麼是AOP
    (1)面向切面程式設計(方面),利用AOP可以對業務邏輯各個部分進行隔離,降低耦合度,方便開發.
    (2)通俗描述: 不通過修改原始碼,在主幹功能裡新增新功能.

2.AOP(底層原理)

  • AOP底層使用動態代理
    Spring5已將動態代理程式碼進行封裝,我們只需最簡單方式進行配置即可
    兩種情況動態代理:
  1. 有介面: 使用JDK動態代理:
    創造介面實現類代理物件(不是new出來的),通過代理物件來實現增強功能

  2. 無介面: 使用CGLIB動態代理
    建立當前類子類的代理物件(不是new出來的),通過代理物件來實現增強功能

3.AOP(JDK動態代理)

  1. 需要使用java.lang.reflect.Proxy類裡面的方法來建立代理物件
    (1)呼叫newProxyInstance(ClassLoader, 類<?>, InvocationHandler)方法
    引數一: 類載入器
    引數二: 增強方法所在的類,這個類實現的介面,支援多個介面
    引數三: 實現這個介面InvocationHandler,建立代理物件,實現增強方法

  2. 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類建立介面代理物件