mybatis启动过程分析九mapper解析 cache解析

现在来看cache节点解析
在这里插入图片描述
参数的意义
eviction是缓存的淘汰算法,可选值有"LRU"、“FIFO”、“SOFT”、“WEAK”,缺省值是LRU
flashInterval指缓存过期时间,单位为毫秒,60000即为60秒,缺省值为空,即只要容量足够,永不过期
size指缓存多少个对象,默认值为1024
readOnly是否只读,如果为true,则所有相同的sql语句返回的是同一个对象(有助于提高性能,但并发操作同一条数据时,可能不安全),如果设置为false,则相同的sql,后面访问的是cache的clone副本。
在这里插入图片描述
这里需要注意如果用memcached整合mybatis二级缓存这个properties是有用的,如果用mybatis自己的一般没什么用,在build()方法之后将生成的cache加入到configuration中,如果还记的上节的cache-ref,查找的cache就是这里放进去的。现在看bulid方法。
在看之前需要先看一下mybatis对cache的结构,mybatis中所有的cache都是使用装饰模式来实现
在这里插入图片描述
有一个cache接口在这里插入图片描述
实现类有这么多但是真正缓存的类是PerpetualCache这个cache类
在这里插入图片描述
内部使用hashmap来实现缓存,其余的cache实现都是在PerpetualCache这个类上进行装饰的。例如LruCache,看这个类就知道实现的是最少被使用的缓存算法
在这里插入图片描述
其中的Cache delegate就是被装饰的缓存其中的getId方法和getSize就是直接调用delegate方法。还有FifoCache
在这里插入图片描述
先对cache有个大概印象,现在看cache节点解析过程。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在装饰完了在添加标准装饰器。
在这里插入图片描述
到此cache节点解析完成

猜你喜欢

转载自blog.csdn.net/zhenghuangyu/article/details/86316535