本文纯手敲,转载请联系。
首先描述一下,用注解的方式在spring中使用mybatis的用法:
1.spring配置文件中配置dao层的注解,注意dao只有接口,无实现。
2.书写xml文件
代码实例:
这样,在其他类中注入dao,spring便可以自己生成实现类,并调用相应的sql,本文主要讲解spring-mabatis是如何实现这个过程的?
首先,IAdminGroupMybatisDao是被spring管理了,那么注入到其他类中进行使用的时候,他到底有没有实现类,实现类是什么,他是怎么和实现类进行关联的?
显然,实现类是肯定有的,我们跟踪依稀查询,看一下实现类到底是什么东西?
看到没有,他是mapperproxy对象,来看看mapperproxy有事什么?
mapperProxy是一个代理类,那么在这里他又是代理的哪个类呢?
跟踪源代码可以发现mapperProxy代理的实际上是MapperFactoryBean
那么?到底是在哪里进行代理绑定的呢?跟踪代理进下面这个类:
这就是我们熟悉的jdk动态代理的代码?
还剩最后一个疑问?什么时候每个接口的代理交给spring进行了管理。这里感兴趣的可以可以跟踪spring容器的初始化过程,是动态修改了beandefines.