- Spring Aop 的實現需要依靠動態代理,代理方式有兩種,一種是 JDK 動態代理,一種是 CGLIB 代理
- 註解的方式實現 Aop 時我們需要在配置類中添加一個註解
// 默認爲 proxyTargetClass = false @EnableAspectJAutoProxy @EnableAspectJAutoProxy(proxyTargetClass = true)
- 當爲 false 時,使用的是 JDK 動態代理,爲 true 時使用的是 CGLIB 代理(此時代理對象和目標對象相等)
- JDK 底層實現目標對象(繼承 Proxy 類),CGLIB 底層繼承目標對象
- 面試題:
- 問: JDK 動態代理爲什麼只能基於接口
- 答: JDK 底層源碼已經幫代理對象自動繼承了 Proxy 這個類,由於 Java 是單繼承語法,所以不可能再去繼承目標對象,只能去實現目標對象
有興趣可以關注我的個人公衆號,期待我們共同進步!!!