先上一张转载的架构图
Mybatis执行流程图 | ProcessOn免费在线作图,在线流程图,在线思维导图 |
1.SqlSessionFactoryBean对象的getObject()方法返回的SqlSessionFactory对象注入进去。解析所有的和mybatis有关的配置文件,包括mapper文件,将解析出来的sql信息存放在mapperStatements中,将所有解析出来的信息全部存放于Configuration配置信息中,供全局使用
2.MapperScannerConfigurer对象初始化。然后循环将所有的mapper接口转化成MapperFactoryBean。然后实现BeanFactoryPostProcess接口将MapperFactoryBean(包含一个重要的SqlSessionProxy)信息添加到BeanDefination中。
3.spring在初始化bean的时候,将MapperFactoryBean从BeanDefinition中取出来。通过getObject()返回一个MapperProxyFactory代理对象,然后注入到spring容器中,到此mapper接口的代理对象全部注入到spring容器中,(XxxMapper注入到容器中的是一个XxxMapperProxyFactory代理对象)
----------------------------------------------------------------------------------------------------------------------------
自此spring初始化过程全部结束</