栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【自用】mybatis学习笔记-ConfigBuilder 解析配置文件(第三天)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【自用】mybatis学习笔记-ConfigBuilder 解析配置文件(第三天)

底层逻辑

我之前敲了一遍简单实现spring的源码实现,受益匪浅,可以说完整的理解了一遍源码。 那么mybatis我也应该敲一遍实现过程,但是我时间太紧了,自己内耗的都够呛,很难说,再去静下心敲源码,先做到我自己最好吧,看看情况再去说 动态代理模式是什么东西?? 老师说一会运行程序要用debug方式运行,嗯,有一定道理 构建器模式 用来创建一个复杂的单例对象(先NEW实例化对象)实例化完成后对象需要填充一系列的数据 就是new出来之后,要走很多的set方法,这个对象还是单例模式 应该是sqlSessionFactoryBuilder 构建器构建了SqlSessionFactory 这个工厂就是一个复杂的单例对象 读源码要挑重点的看,不用每一行都理解他是干什么的 因为你不懂他写代码时候的逻辑,主要去看核心实现 加了一个成员变量 来判断我们的过程执没执行果(称作标志性变量) 在实际项目中经常出现 判断某一个过程执没执行过


没见过的东西

evaluate 估计 expression 表现 求值表达式 在断点调试的时候,我要看一下这个东西的执行结果 我想知道evalNode这个方法的返回值

看看这个方法里面返回了什么

点他

返回的是个XNode对象

是说这个对象里面是 是 xml文件代码吗 他是给我复制了一份吗

它解析了xml文件里面的标签名 的值,并把信息赋给了本地 成员变量

这玩意得到了setting标签


properties 标签

看起来,应该是这个(或许不是,可能是自己配置的数据库连接 属性,就是自己在建一个properties .xml)

对,就是这个,引入外部的配置信息

所以就是一个标签一个标签的来解析数据 setting的配置解析 他属于配置文件里面的配置文件,所以就是子配置文件 用子节点的那个 它里面是name value 格式的数据

传进去了总配置文件的 setting 属性 类似于类名。属性一样

到这里已经套了两层了 Xnode.Setting.getChildrenAsProperties properties props 是key value 键值对 他把setting解析这种解析成

key value 键值对

啊?变量名还能这么写??

啊?!!!!

继续,应该是把setting遍历出来,然后赋值进去


hasSetter() 应该是他自己定义的方法 还能往里面进呢。我的天,我要死了

一点一点的检查配置合法性,好萌啊

卧槽,我居然能看懂了


为啥要把这东西给default呢,就因为他是空的??


这是把配置文件 所有属性(X)读出来了 给configurtation了 只存了jdbc,就是外部的那个数据库配置文件 的,现在只看了一个

去看看之前的configuration里面的setVariable()方法

存进去了尼玛的

原来这个Configuration就是这么回事,笑死了,复杂个屁,就是个大型对象罢了 现在代码里面不让有注释,代码即注释 debug的时候怎么快速回到当前代码执行位置 最顶上的就是

我错了,我以为configuration 就是那么回事,但是难的来了 别名的 属性赋值

因为他要去递归遍历,递归我超 我居然能直接看懂源码了,他和spring 底层的xml解析方式简直一模一样




这行注册代码应该是最复杂的

返回一个类型别名注册器对象


在这里

内部已经有了72个了

这72个是这么来的 外面的是一些标签对象

基本的对象,在实现类里面

它东西都不是无中生有的,你愿意找一定能找到的 里面的别名注册代码 递归实现的代码好简洁,但是逻辑好复杂,我到现在都不会

加了5个,怎么就加了五个,也对,别名的范围不大

setting 标签赋值


注意setting标签里面的东西最重要的


数据库连接源

是这么存进去的

这个对象 传了事务管理和 数据连接池

这个环境构造器,构造了什么

事务管理和连接池

草了,还没完,这个也重要


进这个方法里面看一眼

里面是两个配置文件的配置信息

不知道能进哪个断点就多打几个,省着进不去 configuration 所有配置信息都会被读到这里面
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/839206.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号