@Cacheable 缓存注解的用法

Posted 持.之.以.恒

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了@Cacheable 缓存注解的用法相关的知识,希望对你有一定的参考价值。

 在spring中通过获取MemCachedClient来实现与memcached服务器进行数据读取的方式。不过,在实际开发中,我们往往是通过Spring的@Cacheable来实现数据的缓存的,所以,本文给大家详细介绍一下@Cacheable的用法。首先,在使用@Cacheable之前,我们要做好准备工作。

第一步:要导入相应的jar包。
   <classpathentry kind="lib" path="lib/spring-core-4.1.4.RELEASE.jar"/>
    <classpathentry kind="lib" path="lib/spring-cache-1.0.10.jar"/>
    <classpathentry kind="lib" path="lib/spring-context-4.1.4.RELEASE.jar"/>
    <classpathentry kind="lib" path="lib/spring-beans-4.1.4.RELEASE.jar"/>
    <classpathentry kind="lib" path="lib/commons-logging-1.2.jar"/>
    <classpathentry kind="lib" path="lib/log4j-1.2.17.jar"/>
    <classpathentry kind="lib" path="lib/spring-expression-4.1.4.RELEASE.jar"/>
    <classpathentry kind="lib" path="lib/java_memcached-release_2.0.1.jar"/>
    <classpathentry kind="lib" path="lib/spring-aop-4.1.4.RELEASE.jar"/>
    <classpathentry kind="lib" path="lib/spring-aspects-4.1.4.RELEASE.jar"/>
    <classpathentry kind="lib" path="lib/spring-context-support-4.1.4.RELEASE.jar"/>
    <classpathentry kind="lib" path="lib/spring-tx-4.1.4.RELEASE.jar"/>
    <classpathentry kind="lib" path="lib/aopalliance-1.0.jar"/>
    <classpathentry kind="lib" path="lib/ognl-3.0.6.jar"/>
    <classpathentry kind="lib" path="lib/trafficCounter-1.0.2.jar"/>
    <classpathentry kind="lib" path="lib/aspectjweaver-1.8.4.jar"/>
    <classpathentry kind="lib" path="lib/javassist-3.11.0.GA.jar"/>

第二步:xml文件中增加命名空间。

[html]  view plain  copy
  1. <span style="font-size:14px;"><?xml version="1.0" encoding="UTF-8"?>    
  2. <beans xmlns="http://www.springframework.org/schema/beans"    
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.     xmlns:cache="http://www.springframework.org/schema/cache"  
  5.     xmlns:context="http://www.springframework.org/schema/context"  
  6.     xsi:schemaLocation="http://www.springframework.org/schema/beans    
  7.     http://www.springframework.org/schema/beans/spring-beans-3.1.xsd  
  8.     http://www.springframework.org/schema/cache  
  9.     http://www.springframework.org/schema/cache/spring-cache-3.1.xsd  
  10.     http://www.springframework.org/schema/context   
  11.     http://www.springframework.org/schema/context/spring-context-3.1.xsd"></span>  
  12.       
之后添加如下声明:

[html]  view plain  copy
  1. </pre><pre name="code" class="html"><span style="font-size:14px;"><?xml version="1.0" encoding="UTF-8"?>    
  2. <beans xmlns="http://www.springframework.org/schema/beans"    
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.     xmlns:cache="http://www.springframework.org/schema/cache"  
  5.     xmlns:context="http://www.springframework.org/schema/context"  
  6.     xsi:schemaLocation="http://www.springframework.org/schema/beans    
  7.     http://www.springframework.org/schema/beans/spring-beans-3.1.xsd  
  8.     http://www.springframework.org/schema/cache  
  9.     http://www.springframework.org/schema/cache/spring-cache-3.1.xsd  
  10.     http://www.springframework.org/schema/context   
  11.     http://www.springframework.org/schema/context/spring-context-3.1.xsd">  
  12.       
  13.     <!-- 启用缓存注解功能,这个是必须的,否则注解不会生效,另外,该注解一定要声明在spring主配置文件中才会生效 -->   
  14.     <cache:annotation-driven cache-manager="cacheManager" />  
  15.       
  16.     <!-- cacheManager工厂类,指定ehcache.xml的位置 -->     
  17.     <bean id="cacheManagerFactory" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">    
  18.         <property name="configLocation"  value="classpath:cache/ehcache.xml"/>    
  19.     </bean>  
  20.       
  21.     <!-- 声明cacheManager -->    
  22.     <bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager">  
  23.         <property name="cacheManager" ref="cacheManagerFactory"/>  
  24.     </bean>  
  25. </beans></span>  
第二步: ehcache.xml

[html]  view plain  copy
  1. <span style="font-size:14px;"><?xml version="1.0" encoding="UTF-8"?>  
  2. <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
  3.     xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd"  
  4.     updateCheck="false" dynamicConfig="false" monitoring="autodetect">    
  5.     <diskStore path="java.io.tmpdir" />  
  6.     <!--  
  7.         diskStore path:用来配置磁盘缓存使用的物理路径  
  8.         name:   缓存名称,cache的唯一标识(ehcache会把这个cache放到HashMap里)  
  9.         eternal="false"   元素是否永恒,如果是就永不过期(必须设置)  
  10.         maxElementsOnDisk====磁盘缓存中最多可以存放的元素数量,0表示无穷大   
  11.         maxElementsInMemory="1000" 内存缓存中最多可以存放的元素数量(必须设置)  
  12.         timeToIdleSeconds="0"   导致元素过期的访问间隔(秒为单位). 0表示可以永远空闲,默认为0  
  13.         timeToLiveSeconds="600" 元素在缓存里存在的时间(秒为单位). 0 表示永远存在不过期  
  14.         overflowToDisk="false"  当缓存达到maxElementsInMemory值是,是否允许溢出到磁盘(必须设置)  
  15.         diskPersistent="false"  磁盘缓存在VM重新启动时是否保持(默认为false)  
  16.         diskExpiryThreadIntervalSeconds="100" 磁盘失效线程运行时间间隔,默认是120秒  
  17.         memoryStoreEvictionPolicy="LFU" 内存存储与释放策略.当达到maxElementsInMemory时  
  18.                共有三种策略,分别为LRU(最近最少使用)、LFU(最常用的)、FIFO(先进先出)默认使用"最近使用"策略  
  19.     -->  
  20.     <defaultCache    
  21.         eternal="false"  
  22.         maxElementsInMemory="3000"    
  23.         timeToIdleSeconds="3600"    
  24.         timeToLiveSeconds="0"    
  25.         overflowToDisk="true"Spring Boot缓存注解介绍

    Spring Boot缓存注解介绍

    Spring 缓存——@Cacheable

    Spring Cacheable 注解不缓存null值

    详解Spring缓存注解@Cacheable,@CachePut , @CacheEvict使用

    Spring中@Cacheable的用法