【MyBatis系列9】只要五分钟

这里如果配置了property属性,那么我们可以在setProperties获取到。

完成以上两步,我们就完成了一个插件的配置了,接下来我们运行一下:

在这里插入图片描述

可以看到,setProperties方法在加载配置文件阶段就会被执行了。

[](()MyBatis插件实现原理

==========================================================================

接下来让我们分析一下从插件的加载到初始化到运行整个过程的实现原理。

[](()插件的加载


既然插件需要在配置文件中进行配置,那么肯定就需要进行解析,我们看看插件式如何被解析的。我们进入XMLConfigBuilder类看看

在这里插入图片描述

解析出来之后会将插件存入InterceptorChain对象的list属性

在这里插入图片描述

看到InterceptorChain我们是不是可以联想到,MyBatis的插件就是通过[责任链模式](()实现的

[](()插件如何进行拦截

=====================================================================

既然插件类已经被加载到配置文件了,那么接下来就有一个问题了,插件类何时会被拦截我们需要拦截的对象呢?

其实插件的拦截是和对象有关的,不同的对象进行拦截的时间也会不一致,接下来我们就逐一分析一下。

[](()拦截Executor对象


我们知道,[SqlSession](()对象是通过openSession()方法返回的,而[Executor](()又是属于SqlSession内部对象,所以让我们跟随openSession方法去看一下Executor对象的初始化过程。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值