【自用】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 所有配置信息都会被读到这里面

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值