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