美文网首页
EhCache使用笔记

EhCache使用笔记

作者: rokie | 来源:发表于2017-12-22 15:02 被阅读214次

    1、为什么使用EhCache?

    CacheManager是Spring定义的一个用来管理Cache的接口。Spring自身已经为我们提供了两种CacheManager的实现,一种是基于Java API的ConcurrentMap
    ,另一种是基于第三方Cache实现——Ehcache。
    ConcurrentMap没有设置timeToIdleSeconds(元素过期的访问间隔)和timeToLiveSeconds(元素在缓存里存在的时间),
    只能通过cacheEvict来清理缓存,不清理的缓存会永远存在。
    

    2、在maven+spring + ehcache整合配置

    2.1、pom文件添加依赖

    spring和ehcache版本对应关系:spring3.1 <> ehcache2.8.3 , spring4.2.4 <> ehcache2.10.1

    <dependency>
          <groupId>net.sf.ehcache</groupId>
          <artifactId>ehcache</artifactId>
          <version>2.10.1</version>
    </dependency>
    

    2.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
                maxEntriesLocalHeap="10000"
                eternal="false"
                overflowToDisk="true"
                timeToIdleSeconds="120"
                timeToLiveSeconds="120"
                diskSpoolBufferSizeMB="30"
                maxEntriesLocalDisk="10000000"
                diskExpiryThreadIntervalSeconds="120"
                memoryStoreEvictionPolicy="LRU">
        </defaultCache>
    
        <cache name="transformCache"
               maxEntriesLocalHeap="10000"
               maxEntriesLocalDisk="1000"
               eternal="false"
               diskSpoolBufferSizeMB="30"
               timeToIdleSeconds="300"
               timeToLiveSeconds="600"
               memoryStoreEvictionPolicy="LFU"
               transactionalMode="off">
        </cache>
    </ehcache>
    

    2.3、配置springContext.xml

    <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context"
        xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
           xmlns:cache="http://www.springframework.org/schema/cache"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
            http://www.springframework.org/schema/context   
            http://www.springframework.org/schema/context/spring-context-4.2.xsd
            http://www.springframework.org/schema/aop 
            http://www.springframework.org/schema/aop/spring-aop-4.2.xsd
            http://www.springframework.org/schema/tx 
            http://www.springframework.org/schema/tx/spring-tx-4.2.xsd
            http://www.springframework.org/schema/cache
            http://www.springframework.org/schema/cache/spring-cache-4.2.xsd">
    
    <!-- 启用缓存注解功能,这个是必须的,否则注解不会生效,另外,该注解一定要声明在spring主配置文件中才会生效 -->
        <cache:annotation-driven cache-manager="ehcacheManager"/>
    
        <!-- cacheManager工厂类,指定ehcache.xml的位置 -->
        <bean id="ehcacheManagerFactory" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
            <property name="configLocation" value="config/spring/ehcache.xml" />
        </bean>
        <!-- 声明cacheManager -->
        <bean id="ehcacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager">
            <property name="cacheManager" ref="ehcacheManagerFactory" />
        </bean>
    
    项目目录结构

    相关文章

      网友评论

          本文标题:EhCache使用笔记

          本文链接:https://www.haomeiwen.com/subject/ixatgxtx.html