废话少说,直接上代码:
ehcache。xml文件
& lt; & # 63; xml version=" 1.0 " encoding=" utf - 8 " & # 63;比; & lt; ehcache dynamicConfig=" false "监控=肮乇铡眜pdateCheck=癴alse” xmlns: xsi=" http://www.w3.org/2001/XMLSchema-instance " xsi: noNamespaceSchemaLocation=癳hcache.xsd”比; & lt; !——定义缓存策略 永恒的=" false "//元素是否永恒,如果是就永不过期(必须设置) maxEntriesLocalHeap=" 1000 "//堆内存中最大缓存对象数,0没有限制(必须设置) overflowToDisk=" false "//当缓存达到maxElementsInMemory值是,是否允许溢出到磁盘(必须设置) diskPersistent=" false "//磁盘缓存在VM重新启动时是否保持(默认为假) timeToIdleSeconds=" 0 "//导致元素过期的访问间隔(秒为单位)。当永恒为假时,这个属性才有效,0表示可以永远空闲,默认为0 timeToLiveSeconds=" 600 "//元素在缓存里存在的时间(秒为单位)。0表示永远存在不过期 memoryStoreEvictionPolicy=" LFU "//当达到maxElementsInMemory时,如何强制进行驱逐默认使用“最近使用(LRU)“策略,其它还有先入先出先进先出,最少使用LFU,较少使用LRU ——比; & lt; ! 1)maxElementsInMemory(正整数):在内存中缓存的最大对象数量 2)maxElementsOnDisk(正整数):在磁盘上缓存的最大对象数量,默认值为0,表示不限制。 3)永恒:设定缓存对象保存的永久属性,默认为假的。当为真时timeToIdleSeconds, timeToLiveSeconds失效。 4)timeToIdleSeconds(单位:秒):对象空闲时间,指对象在多长时间没有被访问就会失效。只对永恒为假的有效。默认值0,表示一直可以访问。 5)timeToLiveSeconds(单位:秒):对象存活时间,指对象从创建到失效所需要的时间。只对永恒为假的有效。默认值0,表示一直可以访问。 6)overflowToDisk:如果内存中数据超过内存限制,是否要缓存到磁盘上。 7)diskPersistent:是否在磁盘上持久化。指重启jvm后,数据是否有效。默认为假。 8)diskSpoolBufferSizeMB(单位:MB): DiskStore使用的磁盘大小,默认值30 MB。每个缓存使用各自的DiskStore。 9)memoryStoreEvictionPolicy:如果内存中数据超过内存限制,向磁盘缓存时的策略。默认值LRU,可选FIFO, LFU。 FIFO(先进先出):先进先出 LFU(不常用):最少被使用,缓存的元素有一个冲击属性,冲击值最小的将会被清除缓存。 LRU(最近最少使用)默认策略:最近最少使用,缓存的元素有一个时间戳,当缓存容量满了,而又需要腾出地方来缓存新的元素的时候,那么现有缓存元素中时间戳离当前时间最远的元素将被清除缓存。 10)maxEntriesLocalHeap堆内存中最大缓存对象数 ——比; & lt; diskStore路径=" java.io.tmpdir "祝辞& lt;/diskStore> & lt; defaultCache 永恒的=" false " maxEntriesLocalHeap=" 0 " timeToIdleSeconds=" 120 " timeToLiveSeconds=" 120 " maxElementsInMemory=" 10000 " overflowToDisk=" true " diskPersistent=" true "/比; & lt;缓存 name=" userCache " maxEntriesLocalHeap=" 10000 "/比; & lt;缓存 name=" studentCache " maxEntriesLocalHeap=" 10000 "/比; & lt;/ehcache> >之前需要增加的JAR包
xmlns:缓存=" http://www.springframework.org/schema/cache " http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache.xsd
<>强增加豆强>
& lt; !——启用缓存注解功能(请将其配置在春天主配置文件中)——比; & lt;缓存:注解驱动的缓存管理器="缓存管理器"/比; & lt; !——春天提供的基于的Ehcache实现的缓存管理器——比; & lt; bean id=癱acheManagerFactory”类=皁rg.springframework.cache.ehcache.EhCacheManagerFactoryBean”比; & lt;属性名=" configLocation " value=" https://www.yisu.com/zixun/classpath配置/ehcache.xml”/比; & lt;/bean> & lt; bean id=盎捍婀芾砥鳌崩?皁rg.springframework.cache.ehcache.EhCacheCacheManager”比; & lt;属性名="缓存管理器" ref=" cacheManagerFactory "/比; & lt;/bean>
EHCacheUtils操作类
进口net.sf.ehcache.Cache; 进口net.sf.ehcache.CacheManager; 进口net.sf.ehcache.Element;/* * *操作缓存类 * * @author jiangadam */公开课EhcacheUtils { 私有静态最终字符串路径="/config/ehcache.xml”;//EHCache的配置文件地址 私人CacheManager经理; 私有静态EhcacheUtils ehCache; 私人EhcacheUtils (String路径){ 经理=CacheManager.create (getClass () .getResource(路径)); } 公共静态EhcacheUtils getInstance () { 如果(ehCache==null) { ehCache=new EhcacheUtils(路径); } 返回ehCache; }/* * *缓存一个对象 * * @param cacheName *缓存的名字 * @param关键 *缓存的关键 * @param价值 *缓存的值 */cacheName公共空把(字符串,字符串键,对象值){ 缓存缓存=manager.getCache (cacheName); 元素元素=新元素(关键字,值); cache.put(元素); }/* * *获取一个缓存的对象,没有返回零 * * @param cacheName * @param关键 * @return */cacheName公共对象(字符串,字符串键){ 缓存缓存=manager.getCache (cacheName); 元素元素=cache.get(关键); 返回元素==null & # 63;空:element.getObjectValue (); } 公共缓存get (String cacheName) { 返回manager.getCache (cacheName); } 公共空间删除(cacheName的字符串,字符串键){ 缓存缓存=manager.getCache (cacheName); cache.remove(关键); } }Spring MVC详解集成EHCache缓存