00:00
好,我们刚才说完咱们马贝蒂斯的运行原理以后呢,哎,我们接下来就来说咱们这个插件开发,那么这个运行原理的这个图来,我们现在就应该看的非常清楚了,首先呢,根据各种配置文件,那马贝蒂斯的全局配置文件和circleq映射文件得到circle session factor,这个factor呢,创建出circle session circle session里边用ex执行增删改查,而每一个增删改查标签我们最终都被映射成了一个map部的statement,哎,这个对象里边封装了每一个增删改查的详细细节,而我们刚才看原理的时候,我们也哎知道这里边呢有一个叫statement handler来执行增删改查的,而执行增删改查要设置参数啊,我们使用呢,Primeter handleler perter handleler,借助type handleler,而查增删改查完了以后要封装结果,哎,我们用result set handleler。
01:00
到set handle呢,也借助type handle来提取结果值。好,我们接下来就来看我们这个插件开发,而插件开发呢,我们在讲原理的时候,一直都给大家说来关注这四大对象所存在的地方,而我们也发现只要是四大对象创建的地方,都会有这么一句代码,哎,这句代码呢。我们注意一下来,只要有创建的地方,都会有一个叫intercept点跟O,这也正是我们插件机制的起源,所以说呢,我们接下来说我们插件机制,那么呢,我们也是基于这个入口开始来看我们插件如何做好,我现在呢就来写一个新的工程。那么在这里边来刷刷插件。好,我们叫英特尔plug插件开发。
02:07
好,我们在这一块呢,来说一下我们这个插件开发,而插件开发呢,好,我们在这一块来用一个新的方法。Test啊,我们说一下咱们这个插件的机制,首先呢,我们在看原理的时候,哎,我们都知道在每四大对象,在咱们这个四大对象啊创建的时候。这个创建呢,我们来随便来看我们某一处源码,Statement看到了来,我们就以statement看到了创建为例。那么这个对象呢,打开我们创建的呢,是咱们这个prepare statement handle,在它的构造器里边,哎,会有创建其他的东西,哎,比如创建per handler result set handler,但是呢,不管是哪个创建,我们点进去看。
03:05
哎,它就会有一个方法叫O。也就是说呢,每个创建出来的对象。每一个。每个创建出来的对象,对象不是啊,直接返回的。而是调用我们这个方法,而是调用这个方法以后返回,比如说呢,我们也看到了这处源码,哎,这出我们以它为例,它呢最终会调用这个intercept chin啊plug o方法,把你这个各种看到了返回,而这个方法的实现呢,你点开,哎就是这一对。我们把它拿到。好,对于这个方法的实现就在这儿。
04:00
哎,这是它的拉or方法。我们来说一下第二个。也就是说呢,每一个对象的创建都会调用拉呢,它的原理就是拿到所有的。获取到所有的intercept,哎,这个intercept就是我们插件需要实现的接口来,我们这个插件就是基于拦截器原理,哎,我们翻译过来呢,就叫拦截器好拿到所有的intercept,然后呢调用。每一个方法返回,把plug后的数对象返回。返回咱们这个他给他包装后的对象。好,所以说呢,这是咱们这个插件原理在这。而这一块怎么包装呢?哎,我们后来来说,其实呢,我们自己写完插件以后,我们来自定义普拉根方法以后,哎,我们就可以为这个target创建一个代理对象,所以说呢,插件机制我们可以可以,哎使用插件为咱们这个目标对象创建一个代理对象,哎这样的话呢,因为我们四大对象每一个创建都会用插件栏,那么我插件假设栏道咱per handle到了,我为prime handle到了创建一个代理对象,那以后呢,Permit handle执行它方法的时候,都会先执行我们这个代理对象的方法,那我们就在这个代理对象里边呢,我们可以在primeter handle了,执行之前,前后左右我们都可以做一些事情,这也跟我们哎per里边的A机制也是。
06:00
一样的,这就是我们,哎,面向切面的一个变化方式。所以说呢,我们为我们目标对象啊,为我们四大组件创建代理插件呢,插件我们的插件,插件可以为咱们这个呢,四大对象创建,除代理对象来以后呢,我们这个代理对象就能拦截到四大对象的每一个核心方法。就可以拦截的四大对象的每一个执行方法,哎,你说让他拦截哪个对象的哪个方法,它就拦截哪个对象的哪个方法,这是我们插件的这个机制原理,我们放在这儿,接下来我们写一个插件的实现。
我来说两句