Mybatis 源码解析:从 DOM 到 XNODE
2023-12-17 20:04:19
Mybatis 源码之美:将 Mybatis 全局配置文件对应的 DOM 转换为 XNODE 对象
在上一篇文章中,我们完成了 XmlConfigBuilder
对象的构建工作,为解析 XML 文件做好了基础准备。接下来,我们就来调用 XmlConfigBuilder
暴露的 parse()
方法,完成 Mybatis 配置文件的解析工作。
在解析之前,Mybatis 会调用 parseConfigElement()
方法来解析 XML 文件的根元素,并将解析结果存储在 Configuration
对象中。parseConfigElement()
方法会根据根元素的名称来判断要解析的元素类型,并调用相应的解析方法来完成解析工作。
对于全局配置文件来说,根元素的名称是 configuration
。因此,Mybatis 会调用 parseConfiguration()
方法来解析全局配置文件的根元素。parseConfiguration()
方法会首先解析根元素下的子元素,并将解析结果存储在 Configuration
对象中。
在解析子元素时,Mybatis 会根据子元素的名称来判断要解析的元素类型,并调用相应的解析方法来完成解析工作。例如,对于 <environments>
元素,Mybatis 会调用 parseEnvironments()
方法来解析环境配置;对于 <settings>
元素,Mybatis 会调用 parseSettings()
方法来解析设置配置;对于 <typeAliases>
元素,Mybatis 会调用 parseTypeAliases()
方法来解析类型别名配置;对于 <mappers>
元素,Mybatis 会调用 parseMappers()
方法来解析映射器配置。
在解析完所有子元素后,parseConfiguration()
方法会将解析结果存储在 Configuration
对象中,并返回该对象。
接下来,Mybatis 会调用 build()
方法来构建 Configuration
对象。build()
方法会首先调用 typeAliasRegistry
、settings
和 environment
等属性的 build()
方法来构建这些属性对应的对象。然后,build()
方法会调用 mapperRegistry
属性的 build()
方法来构建映射器注册表。最后,build()
方法会将构建好的 Configuration
对象返回。
至此,Mybatis 就完成了全局配置文件的解析工作。接下来,Mybatis 就可以使用解析后的 Configuration
对象来初始化自身,并为后续的数据库操作做好准备。
希望本文能帮助您更好地理解 Mybatis 的源码。如果您有任何问题,欢迎随时提问。