刚刚用到EChache整合SpringMVC,用到的Marven:
1、org.springframework:spring-webmvc:4.3.2.RELEASE
2、org.springframework:spring-context-support:4.3.4.RELEASE
3、net.sf.ehcache:ehcache-web:2.0.4
一、SpringMVC+Ehcachesql缓存
1、配置XML,在applicationContext.xml配置文件中加上以下代码:
<!--ehcache配置--> <cache:annotation-driven cache-manager="cacheManager" /> <bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager"> <property name="cacheManager" ref="ehcacheFactory"></property> </bean> <bean id="ehcacheFactory" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"> <property name="configLocation" value="classpath:xmlconfig/ehcache-setting.xml"></property> </bean>
2、配置ehcache-setting.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="true" monitoring="autodetect" dynamicConfig="true"> <diskStore path="E://tmpdir"/> <defaultCache maxElementsInMemory="10000" eternal="false" timeToIdleSeconds="1000000" timeToLiveSeconds="1000000" overflowToDisk="true" maxElementsOnDisk="10000000" diskPersistent="false" diskExpiryThreadIntervalSeconds="120" memoryStoreEvictionPolicy="LRU"> </defaultCache> <cache name="getTable" maxElementsInMemory="10000" eternal="false" timeToIdleSeconds="20" timeToLiveSeconds="20" overflowToDisk="true" maxElementsOnDisk="10000000" diskPersistent="false" diskExpiryThreadIntervalSeconds="120" memoryStoreEvictionPolicy="LRU" /> </ehcache>
3、通过注释的方式
在Service中通过@Cacheable注解,此处的getTable,在ehcache-setting.xml中定义。
@Cacheable(value = "getTable") public List<String> getDept(){ return configService.getDept(); }
二、jsp+ehcache缓存整个页面
1、在web.xml中添加代码
<filter> <filter-name>PageCachingFilter</filter-name> <filter-class>net.sf.ehcache.constructs.web.filter.SimplePageCachingFilter</filter-class> <init-param> <param-name>cacheName</param-name> <param-value>SimplePageCachingFilter</param-value> </init-param> </filter> <filter-mapping> <filter-name>PageCachingFilter</filter-name> <url-pattern>/index.jsp</url-pattern> </filter-mapping>
2、添加ehcache.xml
此处的ehcache.xml需要放在src目录下,具体是否可以配置位置还未找到
<?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="true" monitoring="autodetect" dynamicConfig="true"> <cache name="SimplePageCachingFilter" maxElementsInMemory="10000" eternal="false" overflowToDisk="false" timeToIdleSeconds="300" timeToLiveSeconds="5" (保留5秒) memoryStoreEvictionPolicy="LFU" /> </ehcache>
3、通过jsp测试,5秒后时间才会变动。
<%=new Date().getTime()%>
三、jsp+ehcache缓存局部页面
1、在web.xml中添加
<!--ehcache 页面局部缓存 --> <filter> <filter-name>PageFragmentCachingFilter</filter-name> <filter-class>net.sf.ehcache.constructs.web.filter.SimplePageFragmentCachingFilter</filter-class> <init-param> <param-name>cacheName</param-name> <param-value>SimplePageFragmentCachingFilter</param-value> </init-param> </filter> <filter-mapping> <filter-name>PageFragmentCachingFilter</filter-name> <url-pattern>/_cache.jsp</url-pattern> <dispatcher>INCLUDE</dispatcher> </filter-mapping>
2、在ehcache中添加
<cache name="SimplePageFragmentCachingFilter" maxElementsInMemory="10000" eternal="false" overflowToDisk="false" timeToIdleSeconds="300" timeToLiveSeconds="10" memoryStoreEvictionPolicy="LFU" />