Spring中集成Ehcache缓存

1、导入依赖包

  <dependency>
     <groupId>org.springframework</groupId>
     <artifactId>spring-context-support</artifactId>
     <version>4.0.0.RELEASE</version>
  </dependency>
  <dependency>
      <groupId>net.sf.ehcache</groupId>
      <artifactId>ehcache</artifactId>
      <version>1.6.2</version>
 </dependency>

  

2、增加ehcache.xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd"
         updateCheck="false">

    <diskStore path="java.io.tmpdir" />

    <defaultCache eternal="false"
                  maxElementsInMemory="1000"
                  overflowToDisk="false"
                  diskPersistent="false"
                  timeToIdleSeconds="0"
                  timeToLiveSeconds="600"
                  memoryStoreEvictionPolicy="LFU" />

    <cache name="myCache"
           eternal="false"
           maxElementsInMemory="500"
           overflowToDisk="false"
           diskPersistent="false"
           timeToIdleSeconds="0"
           timeToLiveSeconds="300"
           memoryStoreEvictionPolicy="LFU" />

</ehcache>

  

3、在配置文件中开启缓存

applicationContext.xml文件

Spring中集成Ehcache缓存

 

4、在applicationContext.xml文件中增加缓存配置

    <!--启动缓存注解-->
   <cache:annotation-driven cache-manager="cacheManager" />
    <!--spring提供的基于encache实现的缓存管理权-->
    <bean id="cacheManagerFactory" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
        <property name="configLocation" value="classpath:ehcache.xml" />
    </bean>
    <bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager">
        <property name="cacheManager" ref="cacheManagerFactory" />
    </bean>

  

5、将缓存注解写在service.impl层

 @Cacheable(value = "myCache", key = "'StudentImpl.queryStudent'")
 public Student queryStudent(String xxId) 
 {
	System.out.println("ServiceImpl获得学生信息");
        。。。
 }

  value对应ehcache.xml文件里的name,相当于一个缓存空间。key最好在全局唯一,这里使用类名+方法名。 可以根据这个key对特定的缓存进行清理。

 

6.测试

Controller获得学生信息
ServiceImpl获得学生信息

Controller获得学生信息

  第二次调用,只打印了Controller层的信息, 说明已经使用了缓存。

上一篇:SpringBootsad整合EhCache做缓存处理


下一篇:spring boot -整合Ehcahe