Spring-EhCache配置实例

使用配置

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;

@Service
public 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()));
    }
}

转载:http://blog.csdn.net/foreverling/article/details/51406802

时间: 2024-11-01 09:45:15

Spring-EhCache配置实例的相关文章

Spring+EhCache缓存实例(详细讲解+源码下载)

版权声明:本文为博主原创文章,转载注明出处http://blog.csdn.net/u013142781 目录(?)[+] 一.ehcahe的介绍 EhCache 是一个纯Java的进程内缓存框架,具有快速.精干等特点,是hibernate中默认的CacheProvider.Ehcache是一种广泛使用的开源Java分布式缓存.主要面向通用缓存,Java EE和轻量级容器.它具有内存和磁盘存储,缓存加载器,缓存扩展,缓存异常处理程序,一个gzip缓存servlet过滤器,支持REST和SOAP

Spring XML配置十二个最佳实践

xml     在这篇文章里,对于Spring XML的配置,我将向你展示12种比较好的实践.其中的一些实践不仅是好的实践,更是必要的实践.除此以外,还有其他因素,例如领域模型的设计,都能影响XML的配置,但是这篇文章重点研究XML配置的易读性和易管理性. 1.不要使用autowiring Spring可以通过类的自省来自动绑定其依赖部分,使得你不必明确指明bean的属性和构造器.Bean的属性可以通过属性名称或类型匹配来实现自动绑定.构造器通过类型匹配来实现自动绑定.你甚至可以指定自动检测自动

JSF+Spring+Hibernate的实例讲解

js 使用JavaServer Faces(JSF).Spring Framework和Hibernate建立一个真实的Web应用程序内容概要使用JSF建立一个真实的Web应用程序不是没有意义的任务,这篇文章介绍了如何将JSF与Sping Framework和Hibernate集成,并且给出了使用这些技术建立这个真实的Web应用程序的最佳实践和设计指导 JavaServer Faces(JSF)技术是J2EE应用程序的一个新的用户接口框架,它非常适合基于MVC(Model-View-Contro

springmvc与mybatis集成配置实例详解_java

简单之美,springmvc,mybatis就是一个很好的简单集成方案,能够满足一般的项目需求.闲暇时间把项目配置文件共享出来,供大家参看: 1.首先我们来看下依赖的pom: <!-- spring --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.ve

Hibernate Ehcache 配置

hibernate 默认使用 ehcache 缓存策略 ehcache 配置 <?xml version="1.0" encoding="UTF-8"?> <ehcache> <!--<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="ehcache.xsd"

Spring+Ehcache怎么缓存List集合?

问题描述 Spring+Ehcache怎么缓存List集合? Spring+Ehcache怎么实现缓存List集合?...................................... 解决方案 如何在JPA,Hibernate 和 Spring 中配置 Ehcache 缓存 解决方案二: http://mixer-b.iteye.com/blog/1563872

spring 零配置的问题

问题描述 用到spring零配置,有个问题请问下大家 . service层的接口能注入到action里面吗? 怎么实现丫? 问题补充:suziwen 写道 解决方案 接口为:public interface UserService {}实现类:@Service("userServiceImpl")public class UserServiceImpl implements UserService {}Action:@Controller("/user")publi

Cisco防火墙pix515配置实例

一.引言 硬件防火墙的应用,现在是越来越多,产品也很丰富.一般国产的防火墙多带有中文的说明和一些相应的配置实例,但国外的产品几乎都没有中文的说明书. 二.物理连接 Pix515的外观:是一种标准的机架式设备,高度为2U,电源开关和接线在背后.正面有一些指示灯,如电源.工作是否正常的表示等:背面板 有一些接口和扩展口,我们这次要用到的接口有三个:两个以太(RJ-45网卡)和一个配置口,其英文分别是:ETHERNET0.ETHERNET1和CONSOLE. 先将防火墙固定在机架上,接好电源:用随机带

网络相册开发(4)——Spring中配置JPA

在src/META-INF下添加persistence.xml 1.<?xml version="1.0" encoding="UTF-8"?>2.<persistence xmlns="http://java.sun.com/xml/ns/persistence"3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"4. xsi:schemaLoca