Spring MVC详解集成EHCache缓存

  

废话少说,直接上代码:

  

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包

  

详解Spring MVC集成EHCache缓存“> <br/>
  </p>
  <p> <强> springmvc。xml需要在bean增加以下</强> </p>
  
  <pre类=   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缓存