(1) EhCache如何创建?用什么来创建?
EhCache框架中的Cache继承结构图:
Cache类实现了Ehcache接口. Ehcache接口里有定义了很多方法,不过我们这里只关注现在要用到的: get,put,remove.这几个方法也折射出Cache的实质: 把数据放到缓存中, 从缓存中取出数据和从缓存中删除掉不再有意义的数据。
我们发现可以在ConfigurationHelper类中通过Cache(CacheConfiguration cacheConfiguration)构造器,传入一个创建一个CacheConfiguration 类的实力来创建Cache。通过阅读源码可以发现,在CacheConfiguration封装了我们在ehcache.xml中设置的cache配置特性。
也就是说,配置中的 一个Cache对象对应着ehcache.xml配置文件中一个<cache>标签. 即以下的配置信息:
<cache name="com.rmn190.MethodCache"
maxElementsInMemory="10"
eternal="false"
timeToIdleSeconds="200"
timeToLiveSeconds="300"
overflowToDisk="true"
/>
因此,一个Cache对象对应着Ehcache项目在内存或磁盘里根据<cache>标签里信息划分出来的一个存储空间,为了使用上的方便,给这存储空间起了个名字,即<cache>标签中的name信息。
(二) Cache类如何实现EhCache中定义的方法以实现缓存功能。
Cache中依赖的的几个类(封装的数据依赖):
1. private volatile Store compoundStore:实际上我们缓存的数据最终都是要到这个类里面进行存储的
Store类的继承结构图如下:
通过图中可以看到所有的存储类都实现Store接口类,大概有以下几种存储方式:
- 集群方式:ClusteredStore
- 缓存方式:CacheStore
- 内存方式:MemoryStore
- 磁盘方式:DiskStore