spring整合Ehcache

在整合之前需要做相关的准备

  1. 在pom.xml中添加ehcache的相关依赖包。
  2. 在spring的配置文件中添加ehcache的配置。
  3. 准备一份ehcache.xml文件,配置缓存的策略。
  4. 在代码层面上使用spring提供的注解进行具体实现。

根据以上的说明下面开始将ehcache整合到spring中。

  • 在pom.xml中添加依赖
        <dependency>
            <groupId>net.sf.ehcache</groupId>
            <artifactId>ehcache</artifactId>
            <version>2.9.0</version>
        </dependency>
  • 在spring.xml中配置ehcache

    <bean id="ehcacheManagerBean" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
        <property name="configLocation" value="classpath:ehcache.xml"/>
        <property name="shared" value="true"/>
    </bean>

    <bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager">
        <property name="cacheManager" ref="ehcacheManagerBean"/>
        <property name="transactionAware" value="true"/>
    </bean>
  • 创建ehcache.xml
<?xml version="1.0" encoding="UTF-8"?>
<ehcache  updateCheck="false">
    <diskStore path="java.io.tmpdir"/>
    <defaultCache

            maxElementsInMemory="1000"
            eternal="false"
            timeToIdleSeconds="120"
            timeToLiveSeconds="120"
            overflowToDisk="false"
            diskPersistent="false"
            diskExpiryThreadIntervalSeconds="120"
            />


</ehcache>

        缓存配置

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内存数量最大时是否清除。

 

  • 在Service层的接口实现类的方法上使用spring提供的注解实现

spring 提供的cache注解有以下几个:

@Cacheable      @CacheEvict     @CachePut

@Cacheable(value=”usersCache”)这个注释的意思是,当调用这个方法的时候,会从一个名叫 usersCache的缓存中查询,如果没有,则执行实际的方法(即查询数据库),并将执行的结果存入缓存中,否则返回缓存中的对象。这里的缓存中的 key 就是参数 userName,value 就是 Account 对象。“usersCache”缓存是在 ehcache.xml 中定义的名称。

165245_w8Ro_1993676.png

@CacheEvict 注释来标记要清空缓存的方法,当这个方法被调用后,即会清空缓存。注意其中一个 @CacheEvict(value=”accountCache”,key=”#account.getName()”),其中的 Key 是用来指定缓存的 key 的,这里因为我们保存的时候用的是 account 对象的 name 字段,所以这里还需要从参数 account 对象中获取 name 的值来作为 key,前面的 # 号代表这是一个 SpEL 表达式,此表达式可以遍历方法的参数对象,具体语法可以参考 Spring 的相关文档手册。

165341_ZWhm_1993676.png

@CachePut 的作用 主要针对方法配置,能够根据方法的请求参数对其结果进行缓存,和 @Cacheable 不同的是,它每次都会触发真实方法的调用

165412_YPCP_1993676.png

 

 

 

转载于:https://my.oschina.net/u/1993676/blog/1186795

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值