《MyBatis技术内幕》笔记1—基础支持层

        看这边书是为了学习mybatis的实现原理,以便解决实际应用中的问题,还有就是学习里面的思想和设计模式,这本书很好的一点就是结合设计模式来讲解的,对理解设计模式也很有帮助。笔记是个人的一个小总结,也可以说是一个内容轮廓,初学勿喷,欢迎交流。

一、基础支持层

1、解析器模块
XPathParser:封装了XPath、Document、EntityResolver(XMLMapperEntityResolver验证mybatis的xml)。

2、反射模块
Reflector:是反射模块的基础,每个Reflector对象都对应一个类,在Reflector中缓存了反射操作要使用的类的元信息。
ReflectorFactory:默认实现DefaultReflectorFactory,主要是对Reflector对象的创建和缓存。
Property*:属性工具类,PropertyTokenizer属性表达式解析,PropertyNamer方法名到属性名转换及多种检测操作,PropertyCopier属性拷贝。
MetaClass:是mybatis对类级别的封装和处理,通过Reflector和PropertyTokenizer组合实现,实现复杂的属性表达式解析,并实现获取指定属性描述信息的功能。
MetaObject:是mybatis对对象级别的封装和处理,其中对类级别的方法直接使用MetaClass。

3、类型转换模块
TypeHandler:用于完成单个参数以及单个列值的类型转换。
TypeHandlerRegistry:在mybatis初始化过程中,会为所有已知的TypeHandler创建对象,并实现注册到TypeHandlerRegistry中,由TypeHandlerRegistry管理这些TypeHandler对象。
TypeAliasRegistry:对类的别名注册和管理。

4、日志模块
相关模式:适配器模式、代理模式。
适配器模式:Log接口mybatis中目标对象,Slf4jImpl等是适配器,对应Slf4j等第三方实现。
代理模式:jdbc包下抽象类BaseJdbcLogger,由ConnectionLogger等实现,得到的动态代理对象的代理目标是Connection等,实现日志的输出。

5、资源加载模块
相关模式:单例模式(饿汉模式与懒汉模式),在懒汉模式在多线程下可能有问题,使用双重检测锁和volatile或者静态内部类(推荐)的方式解决。
mybatis的io包下:ClassLoaderWrapper包装多个类加载器,ResolverUtil查找指定包下的类,VFS实现类JBoss6VFS和DefaultVFS查找指定路径下的资源。

6、数据源模块
相关模式:工厂方法模式
DataSourceFactory(工厂接口):工厂接口实现类UnpooledDataSourceFactory与PooledDataSourceFactory。
javax.sql.DataSource(产品接口):产品接口实现类UnpooledDataSource与PooledConnection。

7、事务模块
Transaction事务接口:实现类JbdcTransaction和ManagedTransaction。
TransactionFactory事务工厂接口:实现类JbdcTransactionFactory和ManagedTransactionFactory。

8、binding模块
MapperRegistry:是Mapper接口及其对应的代理对象工厂MapperProxyFactory的注册中心,包括全局唯一的配置对象Configuration和mapper与MapperProxyFactory的映射对象。
MapperProxy:用于动态代理Mapper,包括关联的SqlSession对象、Mapper接口对应的class对象和MapperMethod缓存。
MapperMethod:中封装了Mapper接口对应的方法信息以及对应的sql语句信息,完成参数转换和sql执行,获得对应返回类型结果。内部类SqlCommand记录该方法对应sql的类型(insert、update等)和名称(用与获取对应的sql)。内部类MethodSignature记录该方法的相关信息,包括参数返回类型相关信息。

9、缓存模块
相关模式:装饰模式
Cache(组件接口):定义了全部组件实现类以及所有装饰器实现的行为。
PerpetualCache(组件实现类):具体的组件实现类,就是被装饰器装饰的原始对象。
ScheduledCache、SerializedCache等(装饰器实现类):实现组件接口并封装一个被装饰的组件。
在装饰模式中,可以定义一个装饰父类统一实现组件接口并封装一个被装饰的组件,然后由装饰实现类继承就可以了。


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值