需要注意的是
基于XML配置:
? ? ?
? ? ? ?
? ? ? ?
? ? ? ?
? ? ?
?
上面配置定义了一个名为cacheAdvice的cache:advice,其中指定了将缓存findById方法和find方法到名为users的缓存中。这里的方法还可以使用通配符“*”,比如“find*”表示任何以“find”开始的方法。有了cache:advice之后,我们还需要引入aop命名空间,然后通过aop:config指定定义好的cacheAdvice要应用在哪些pointcut上。如:
1? ?
2
3? ? ?
4
5? ?
二.EhCache 是一个纯Java的进程内缓存框架,具有快速、精干等特点。
ehcache官网:http://www.ehcache.org/ 可以下载文档看看,里面写的很清楚。
主要的特性有:
1. 快速
2. 简单
3. 多种缓存策略
4. 缓存数据有两级:内存和磁盘,因此无需担心容量问题
5. 缓存数据会在虚拟机重启的过程中写入磁盘
6. 可以通过RMI、可插入API等方式进行分布式缓存
7. 具有缓存和缓存管理器的侦听接口
8. 支持多缓存管理器实例,以及一个实例的多个缓存区域
9. 提供Hibernate的缓存实现
ehcache.xml:里面的注释写的很清楚了。
name : "缓存名称,cache的唯一标识(ehcache会把这个cache放到HashMap里)?
maxElementsInMemory? : 缓存最大个数。
eternal="false"? : 对象是否永久有效,一但设置了,timeout将不起作用。 (必须设置)
maxEntriesLocalHeap="1000"? : 堆内存中最大缓存对象数,0没有限制(必须设置)
maxEntriesLocalDisk= "1000"? : 硬盘最大缓存个数。
overflowToDisk="false"? : 当缓存达到maxElementsInMemory值是,是否允许溢出到磁盘(必须设??)(内存不足时,是否启用磁盘缓存。)
diskSpoolBufferSizeMB? : 这个参数设置DiskStore(磁盘缓存)的缓存区大小。默认是30MB。每个Cache都应该有自己的一个缓冲区。
diskPersistent="false"? : 磁盘缓存在JVM重新启动时是否保持(默认为false)
?timeToIdleSeconds="0"? : 导致元素过期的访问间隔(秒为单位),即当缓存闲置n秒后销毁。 当eternal为false时,这个属性才有效,0表示可以永远空闲,默认为0
?timeToLiveSeconds="600"? : 元素在缓存里存在的时间(秒为单位),即当缓存存活n秒后销毁. 0 表示永远存在不过期
?memoryStoreEvictionPolicy="LFU" : 当达到maxElementsInMemory时,如何强制进行驱逐默认使用"最近使用(LRU)"策略,其它还有先入先出FIFO,最少使用LFU,较少使用LRU
?diskExpiryThreadIntervalSeconds :磁盘失效线程运行时间间隔,默认是120秒。
?clearOnFlush? : 内存数量最大时是否清除。
? ? ? ? updateCheck="true" monitoring="autodetect"
? ? ? ? dynamicConfig="true">
? ?
? ?
?
? ? ? ? ? ? eternal="false"
? ? ? ? ? ? overflowToDisk="false"
? ? ? ? ? ? timeToIdleSeconds="120"
? ? ? ? ? ? timeToLiveSeconds="120"
? ? ? ? ? ? diskSpoolBufferSizeMB="30"
? ? ? ? ? ? maxEntriesLocalDisk="10000000"
? ? ? ? ? ? diskExpiryThreadIntervalSeconds="120"
? ? ? ? ? ? memoryStoreEvictionPolicy="LRU">
? ? ? ?
? ?
?
? ?
? ? ? ? ? maxEntriesLocalDisk="1000"
? ? ? ? ? eternal="false"
? ? ? ? ? diskSpoolBufferSizeMB="30"
? ? ? ? ? timeToIdleSeconds="300"
? ? ? ? ? timeToLiveSeconds="600"
? ? ? ? ? memoryStoreEvictionPolicy="LFU"
? ? ? ? ? transactionalMode="off">
? ? ? ?
? ?
?
好了,这里只是介绍下Spring cache和ehcache的基础,下一篇我会做下实例,基于AOP的缓存实现,基于注解的缓存实现,还有对页面实现缓存。如有写的不好,请大家指正哈!!