Spring-EhCache配置实例

简介: 使用配置Maven依赖 <!--ehcache--> <dependency> <groupId>com.googlecode.ehcache-spring-annotations</groupId> <artifactId>ehcache-spring-annotations&

使用配置

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()));
    }
}
目录
相关文章
|
4月前
|
缓存 监控 Java
Spring Boot中使用Ehcache进行缓存管理
Spring Boot中使用Ehcache进行缓存管理
|
Java 程序员 数据库
【小家Spring】Spring中读取配置的方式,@Value、@PropertySource、@ConfigurationProperties使用详解(下)
【小家Spring】Spring中读取配置的方式,@Value、@PropertySource、@ConfigurationProperties使用详解(下)
【小家Spring】Spring中读取配置的方式,@Value、@PropertySource、@ConfigurationProperties使用详解(下)
|
Java Spring 容器
【小家Spring】Spring中读取配置的方式,@Value、@PropertySource、@ConfigurationProperties使用详解(上)
【小家Spring】Spring中读取配置的方式,@Value、@PropertySource、@ConfigurationProperties使用详解(上)
|
Java Spring 容器
【小家Spring】Spring中读取配置的方式,@Value、@PropertySource、@ConfigurationProperties使用详解(中)
【小家Spring】Spring中读取配置的方式,@Value、@PropertySource、@ConfigurationProperties使用详解(中)
|
存储 缓存 NoSQL
Spring Boot中的缓存支持(一)注解配置与EhCache使用
Spring Boot中的缓存支持(一)注解配置与EhCache使用
266 0
|
SQL 存储 缓存
Spring Boot 2.x基础教程:使用EhCache缓存集群
Spring Boot 2.x基础教程:使用EhCache缓存集群
229 0
|
存储 SQL 缓存
Spring Boot 2.x基础教程:EhCache缓存的使用
Spring Boot 2.x基础教程:EhCache缓存的使用
126 0
|
前端开发 Java 数据库连接
spring+springmvc+hibernate整合实例
最近要弄一个自动化生成表及其实体对应的增删改查的框架,于是我想到了hibernate,hibernate就有根据实体自动建表,而且增删改查,都不需要想mybatis那样在xml文件中配置。 不过怎样让该框架通过前端一个表单页面配置,从而让后台对应的生成,这个我还没想明白,不过说到这,不得不提传统的ssh框架,传统的ssh框架,通常是指spring+struts2+hibernate或spring+struts+hibernate 不过想到struts2就有恐惧感,太多的action和xml配置,比较繁琐,不如springmvc来的痛快。
1323 0
|
缓存 Java 数据库
Spring还可以这样用缓存,你知道吗?
Spring还可以这样用缓存,你知道吗?大家在项目开发过程中,或多或少都用过缓存,为了减少数据库的压力,把数据放在缓存当中,当访问的请求过来时,直接从缓存读取。缓存一般都是基于内存的,读取速度比较快,市面上比较常见的缓存有:memcache、redis、mongodb、guava cache等。
797 0