JDK動態代理和CGLIB代理的一些點

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

有興趣可以關注我的個人公衆號,期待我們共同進步!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章