MyBatis源碼分析--Dao的實現類
現象
我們在寫MyBaits查詢的時候只需要提供接口,并不需要實現類。debug代碼進去,發現實際執行的是MapperProxy的方法。為什么是MapperProxy,是怎么調用進去的。
dao的實現類實際上是MapperProxy
分析
我們在CutomerManageServiceImpl中使用customerMapper的時候就跟其他自定義的bean一樣,通過@Resource注解的方式注入。說明ApplicationContext中已經有名字是CustomerMapper的bean了。
注解方式注入
驗證一下:
打印出所有的bean名字
在bean列表中找到了我們想看到的“customerMapper”。
容器中的customerMapper
結論
MyBatis在容器初始化的時候就為我們生成了dao接口的實現類,是MapperProxy類型的。究竟是什么時候生成的,怎么產生的,下面一節分析。