MyBatis源码分析--Dao的实现类
现象
我们在写MyBaits查询的时候只需要提供接口,并不需要实现类。debug代码进去,发现实际执行的是MapperProxy的方法。为什么是MapperProxy,是怎么调用进去的。
![](https://img.haomeiwen.com/i4055686/69f5e31c3b38b131.png)
分析
我们在CutomerManageServiceImpl中使用customerMapper的时候就跟其他自定义的bean一样,通过@Resource注解的方式注入。说明ApplicationContext中已经有名字是CustomerMapper的bean了。
![](https://img.haomeiwen.com/i4055686/d54a1a55644f3e4e.png)
验证一下:
![](https://img.haomeiwen.com/i4055686/a1e923dffb101089.png)
在bean列表中找到了我们想看到的“customerMapper”。
![](https://img.haomeiwen.com/i4055686/ef1b9eba0f4e445c.png)
结论
MyBatis在容器初始化的时候就为我们生成了dao接口的实现类,是MapperProxy类型的。究竟是什么时候生成的,怎么产生的,下面一节分析。
网友评论