JDK的動態代理是必須掌握的,動態代理的好處就不用我多說了吧 :) 小弟最近在研究mybatis的源碼實現,就開始瞭解mybatis的Mapper代理機制,為什麼介面不用實現類也能代理? 好了,廢話不多說!!! 上代碼 下麵是測試結果: JDK的動態代理要有實現一個InvocationHandler ...
JDK的動態代理是必須掌握的,動態代理的好處就不用我多說了吧 :)
小弟最近在研究mybatis的源碼實現,就開始瞭解mybatis的Mapper代理機制,為什麼介面不用實現類也能代理?
好了,廢話不多說!!! 上代碼
下麵是測試結果:
JDK的動態代理要有實現一個InvocationHandler的介面,要實現invoke的方法,invoke方法中就是代理對象具體的方法調用的邏輯,
在mybatis的Mapper代理中,有一個類 MapperProxy<T>實現了InvocationHandler的介面,並重寫了invoke的方法
下麵是MapperProxy中的invoke方法:
其實為介面進行代理,用的就是偷梁換柱,(小弟拙見)