SpringMVC配置缓存,SpringMVC与ehcache整合

SpringMVC配置缓存,SpringMVC与ehcache整合

因为SpringMVC已经支持了ehcache,所以我们就测试如何整合ehcache

其包在这里

org.springframework.cache.ehcache

属于spring-context-support-4.1.6.RELEASE.jar包,所以这个包肯定不能少哈。


其实整合很简单,我今天是第一次整合,就成功了

请看以下简要步骤,注意本例是假设您已经配置好SpringMVC环境,我们只是增加配置ehcache缓存

1、配置pom.xml,增加以下代码

代码的作用就是下载ehcache的jar,目前最新版本是2.6.11

<dependency> <groupId>net.sf.ehcache</groupId>
    <artifactId>ehcache-core</artifactId>
    <version>2.6.11</version>
</dependency>

2、编写ehcache的参数配置文件,ehcache.xml

<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd"
         updateCheck="false">

	<diskStore path="d://temp" />

    <defaultCache eternal="false"
                  maxEntriesLocalHeap="1000"
                  overflowToDisk="false"
                  diskPersistent="false"
                  timeToIdleSeconds="3600"
                  timeToLiveSeconds="3600"/>

    <cache name="baseCache"
           eternal="false"
           maxEntriesLocalHeap="200"
           overflowToDisk="false"
           diskPersistent="false"
           timeToIdleSeconds="600"
           statistics="true"
           timeToLiveSeconds="600"/>
</ehcache>

以上ehcache.xml的简单解释下

diskStore:配置缓存文件的路劲,他可以是这些参数

本例是自定义的d//temp

他还有这些值

java.io.tmpdir,表示临时文件夹,windows表示在C:\Documents and Settings\Administrator\Local Setting\Temp

system.project_name,表示项目的名字

下面的参数意思表示

eternal 元素是否永恒,如果是就永不过期(必须设置)
maxElementsInMemory 缓存容量的内存最大值(必须设置)
overflowToDisk 当缓存达到maxElementsInMemory值是,是否允许溢出到磁盘(必须设置)
diskPersistent  磁盘缓存在VM重新启动时是否保持(默认为false)
timeToIdleSeconds 导致元素过期的访问间隔(秒为单位). 0表示可以永远空闲,默认为0
timeToLiveSeconds 元素在缓存里存在的时间(秒为单位). 0 表示永远存在不过期
memoryStoreEvictionPolicy 当达到maxElementsInMemory时,如何强制进行驱逐默认使用"最近使用(LRU)"策略,其它还有先入先出FIFO,最少使用LFU,较少使用LRU
上面我都给出了我自己的默认值

3、配置ehcache的核心文件cache-config.xml

配置如下

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       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.1.xsd
        http://www.springframework.org/schema/cache
        http://www.springframework.org/schema/cache/spring-cache.xsd ">

    <cache:annotation-driven cache-manager="cacheManager"/>

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

    <bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager">
        <property name="cacheManager" ref="ehcacheManager"/>
        <property name="transactionAware" value="true"/>
    </bean>
</beans>

上面的的代码中configLocation 指定是ehcache的参数配置文件地址

4、在appcationContext.xml导入ehcache的核心配置文件:cache-config.xml

<import resource="classpath:modelxml/cache-config.xml"/>


5、在您的dao层,在需要缓存的方法名前加入以下注解即可

@Cacheable(value = "baseCache")

注意参数value=baseCache与参数配置文件ehcache.xml中的的cache标签中的name属性一致

以下代码片段为dao层的代码片段

@Cacheable(value = "baseCache")
public List<goodsfl> getfl() {
	String hql = "from goodsfl";
		
	@SuppressWarnings("unchecked")
	List<goodsfl> list = (List<goodsfl>) hibernateTemplate.find(hql);
	return list;
}
6、测试

测试很简单

首先你会发现在你配置的缓存目录下会有文件产生,如我这里产生的文件是

base%0043ache.data 和base%0043ache.index

其次,当某个页面运行第一次,你会在eclipse的窗口发现执行了sql语句

而第二次运行的时候,就没有去执行sql语句


爆款云服务器s6 2核4G 低至0.46/天,具体规则查看活动详情Blog Img