Mybatis核心源码分析之加载XML文件(二)
上一篇分析了Mapper初始化的核心源码,本篇主要分析一下SpringBoot如何加载Mapper.xml文件。
如果在你的SpringBoot项目里引入的是下面的包:
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
</dependency>
那你的项目采用的是自动化配置,本文也是基于自动化配置来介绍的。属性文件是MybatisProperties,里面的属性对应的就是application.properties里的配置项。核心配置类是MybatisAutoConfiguration,在这里会去构造SqlSessionFactory:
上面设置拦截器、包别名、资源路径等的代码就不看了,主要看factory.getObject()这个方法,这里会去解析xml文件。
在SqlSessionFactoryBean里会调用buildSqlSessionFactory()方法
mapperLocations是根据application.properties里配置的xml路劲加载的文件资源。下面new了一个XMLMapperBuilder,xmlMapperBuilder.parse()方法里解析xml文件:
首先是解析xml节点,
在statementParser.parseStatementNode()里生成mappedStatement,column、property、resultMap等会解析成一个个对象。
mappedStatement会添加到configuration的mappedStatements里。
在bindMapperForNamespace()方法里绑定Mapper接口:
最终会调用MapperRegistry.addMapper()方法将Mapper接口构造成MapperProxyFactory放入knownMappers,为Mapper创建动态代理的时候会从knownMappers取出MapperProxyFactory,MapperProxyFactory的newInstance()方法用来创建动态代理。
上一篇: Javac原理剖析
下一篇: Linux内存管理源码剖析(三)
推荐阅读
-
DB数据源之SpringBoot+MyBatis踏坑过程(二)手工配置数据源与加载Mapper.xml扫描
-
啃下MyBatis源码 - MyBatis核心流程三大阶段之代理阶段(binding模块分析)
-
Mybatis源码分析--关联表查询及延迟加载原理(二)
-
Mybatis源码分析--关联表查询及延迟加载原理(二)
-
SpringBoot源码分析之bootstrap.properties文件加载的原理
-
Spring集成Mybatis源码分析(三)-配置文件初始化及XML解析
-
Mybatis核心源码分析之加载XML文件(二)
-
DB数据源之SpringBoot+MyBatis踏坑过程(二)手工配置数据源与加载Mapper.xml扫描
-
Mybatis加载解析Mapper(xml)文件第二讲
-
spring源码分析(二):外部配置文件的加载