MyBatis源码分析(3)—— Cache接口以及实现
@(MyBatis)[Cache]
MyBatis源码分析——Cache接口以及实现
Cache接口
MyBatis中的Cache以SPI实现,给需要集成其它Cache或者自定义Cache提供了接口。
public interface Cache {
String getId();
void putObject(Object key, Object value);
Object getObject(Object key);
Object removeObject(Object key);
void clear();
int getSize();
ReadWriteLock getReadWriteLock();
}

Cache实现
Cache的实现类中,Cache有不同的功能,每个功能独立,互不影响,则对于不同的Cache功能,这里使用了装饰者模式实现。
PerpetualCache
作为为最基础的缓存类,底层实现比较简单,直接使用了HashMap。
FifoCache
FIFO回收策略,装饰类,内部维护了一个队列,来保证FIFO,一旦超出指定的大小,则从队列中获取Key并从被包装的Cache中移除该键值对。
public class FifoCache implements Cache {
// 被包装的类
private final Cache delegate;
// 队列,用来维持FIFO
private LinkedList

浙公网安备 33010602011771号