Spring-EhCache配置实例

来源:互联网 发布:mac安装win10启动黑屏 编辑:程序博客网 时间:2024/05/16 04:06

使用配置

Maven依赖

 <!--ehcache--> <dependency>     <groupId>com.googlecode.ehcache-spring-annotations</groupId>     <artifactId>ehcache-spring-annotations</artifactId>     <type>jar</type>     <version>1.2.0</version> </dependency> <dependency>     <groupId>net.sf.ehcache</groupId>     <artifactId>ehcache</artifactId>     <version>2.10.1</version> </dependency> <!--guava--> <dependency>     <groupId>com.google.guava</groupId>     <artifactId>guava</artifactId>     <version>19.0</version> </dependency> <!--spring--> <dependency>     <groupId>org.springframework</groupId>     <artifactId>spring-context</artifactId>     <version>${spring.framework.version}</version> </dependency> <dependency>     <groupId>org.springframework</groupId>     <artifactId>spring-core</artifactId>     <version>${spring.framework.version}</version> </dependency> <dependency>     <groupId>org.springframework</groupId>     <artifactId>spring-test</artifactId>     <version>${spring.framework.version}</version> </dependency> <dependency>     <groupId>org.springframework</groupId>     <artifactId>spring-beans</artifactId>     <version>${spring.framework.version}</version> </dependency> <dependency>     <groupId>org.springframework</groupId>     <artifactId>spring-asm</artifactId>     <version>3.1.4.RELEASE</version> </dependency> <dependency>     <groupId>org.springframework</groupId>     <artifactId>spring-expression</artifactId>     <version>4.2.0.RELEASE</version> </dependency>

EhCache配置

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">    <defaultCache eternal="false"                  maxElementsInMemory="100000"                  overflowToDisk="false"                  diskPersistent="false"                  timeToIdleSeconds="86400"                  timeToLiveSeconds="86400"                  memoryStoreEvictionPolicy="FIFO" />    <cache name="cityEhCache"           eternal="false"           maxElementsInMemory="100000"           overflowToDisk="false"           diskPersistent="false"           timeToIdleSeconds="86400"           timeToLiveSeconds="86400"           memoryStoreEvictionPolicy="FIFO" />    <cache name="areaEhCache"           eternal="false"           maxElementsInMemory="100000"           overflowToDisk="false"           diskPersistent="false"           timeToIdleSeconds="86400"           timeToLiveSeconds="86400"           memoryStoreEvictionPolicy="FIFO" />    <!--          name:缓存名称。          maxElementsInMemory:缓存最大个数。          eternal:对象是否永久有效,一但设置了,timeout将不起作用。          timeToIdleSeconds:设置对象在失效前的允许闲置时间(单位:秒)。仅当eternal=false对象不是永久有效时使用,可选属性,默认值是0,也就是可闲置时间无穷大。          timeToLiveSeconds:设置对象在失效前允许存活时间(单位:秒)。最大时间介于创建时间和失效时间之间。仅当eternal=false对象不是永久有效时使用,默认是0.,也就是对象存活时间无穷大。          overflowToDisk:当内存中对象数量达到maxElementsInMemory时,Ehcache将会对象写到磁盘中。          diskSpoolBufferSizeMB:这个参数设置DiskStore(磁盘缓存)的缓存区大小。默认是30MB。每个Cache都应该有自己的一个缓冲区。          maxElementsOnDisk:硬盘最大缓存个数。          diskPersistent:是否缓存虚拟机重启期数据 Whether the disk store persists between restarts of the Virtual Machine. The default value is false.          diskExpiryThreadIntervalSeconds:磁盘失效线程运行时间间隔,默认是120秒。          memoryStoreEvictionPolicy:当达到maxElementsInMemory限制时,Ehcache将会根据指定的策略去清理内存。默认策略是LRU(最近最少使用)。你可以设置为FIFO(先进先出)或是LFU(较少使用)。          clearOnFlush:内存数量最大时是否清除。      -->  </ehcache>

ehcache-config.xml:

<?xml version="1.0" encoding="UTF-8"?><beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"       xmlns:p="http://www.springframework.org/schema/p"       xmlns="http://www.springframework.org/schema/beans"       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">    <bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean" p:configLocation="classpath:ehcache.xml"></bean>    <bean id="cityEhCache" class="org.springframework.cache.ehcache.EhCacheFactoryBean" p:name="cityEhCache" p:cacheManager-ref="cacheManager" />    <bean id="areaEhCache" class="org.springframework.cache.ehcache.EhCacheFactoryBean" p:name="areaEhCache" p:cacheManager-ref="cacheManager" /></beans>

代码实例

import net.sf.ehcache.Ehcache;import net.sf.ehcache.Element;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.stereotype.Service;@Servicepublic class CityCacheService {    @Autowired    @Qualifier("cityEhCache")    Ehcache cityEhCache;    public Object get(Long key) {        Element element = cityEhCache.get(key);        if (element == null) {            return null;        }        return element.getObjectValue();    }    public boolean refreshCache() {        //refresh cache        //cityEhCache.put(new Element(objectId, new Object()));    }}
2 0