这里举例使用spring3.1.4 + ehcache
注解的方式使用cache 是在spring3.1加入的
使用方法:
1.ehcache依赖+spring依赖
net.sf.ehcache
ehcache
2.7.2
org.springframework
spring-core
3.1.4.RELEASE
org.springframework
spring-web
3.1.4.RELEASE
org.springframework
spring-webmvc
3.1.4.RELEASE
org.springframework
spring-context
3.1.4.RELEASE
cglib
cglib
2.2.2
2.spring+ehcache的简单配置
name
cache的唯一标识
maxElementsInMemory
最大创建条数
eternal
缓存是否是永久的,默认false
timeToLiveSeconds
缓存的存活时间
timeToIdleSeconds
多长时间不访问就清楚该缓存
overflowToDisk
内存不足是否写入磁盘,默认False
maxElementsOnDisk
持久化到硬盘最大条数
memoryStoreEvictionPolicy
缓存满了后,清除缓存的规则,
自带三种:FIFO(先进先出),LFU(最少使用),LRU(最近最少使用)
diskSpoolBufferSizeMB
磁盘缓存的缓存区大小,默认30M
diskExpiryThreadIntervalSeconds
磁盘失效线程时间间隔
2.1 首先建立一个ehcache.xml的配置文件
/>
2.2在spring的apllication.xml 加入注入的cache
这里还需要在配置文件头部引入
xmlns:cache="http://www.springframework.org/schema/cache"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="
...
http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache-3.1.xsd
"
在mvc-servlet.xml 里加入
3.注解使用
3.1 用于对象 class
@Cacheable(value = "onecache")
class A1{}
这种情况类中方法中返回值都会被缓存,
3.2用于方法method
@Cacheable(value = "onecache", key = "#name",condition ="#age < 25")public xx findEmployeeBySurname(String firstName, String name, intage) {returnxxx
}
这个就会将age小于25的值,按name为key缓存
3.3 清除
@CacheEvict(value="onecache",key="#name + 'haha'")public voiddelete(String name) {
System.out.println("delete one name");
}
还可使用下面的清除全部
@CacheEvict(value="oneCache",allEntries=true)
4.代码调用
@AutowiredprivateCacheManager cacheManager;//获取当前时间
public String getABCCache() {
cacheManager.getCache("ccc").put("hello", newDate().toString());return (String) cacheManager.getCache("ccc").get("hello").get();
}