在這篇博客的創做中,須要用到redis做爲大緩存,單獨對一下小緩存則使用ehcache,這篇博文就是將ehcache和spring整合起來。html
首先須要的maven依賴爲:java
<!--ehcache--> <dependency> <groupId>com.googlecode.ehcache-spring-annotations</groupId> <artifactId>ehcache-spring-annotations</artifactId> <version>${ehcache-spring.version}</version> <type>jar</type> <scope>compile</scope> </dependency> <dependency> <groupId>net.sf.ehcache</groupId> <artifactId>ehcache-core</artifactId> <version>${ehcache-core.version}</version> </dependency>
spring的maven依賴就不在展現出來。
ehcache須要一個配置文件,爲ehcache.xml,內容爲:redis
<?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"> <diskStore path="java.io.tmpdir" /> <!-- 緩存存放目錄(此目錄爲放入系統默認緩存目錄),也能夠是」D:/cache「 java.io.tmpdir --> <defaultCache maxElementsInMemory="10000" eternal="false" timeToIdleSeconds="120" timeToLiveSeconds="120" overflowToDisk="true" maxElementsOnDisk="10000000" diskPersistent="false" diskExpiryThreadIntervalSeconds="120" memoryStoreEvictionPolicy="LRU" /> <!-- name:Cache的惟一標識 maxElementsInMemory:內存中最大緩存對象數 maxElementsOnDisk:磁盤中最大緩存對象數,如果0表示無窮大 eternal:Element是否永久有效,一但設置了,timeout將不起做用 overflowToDisk:配置此屬性,當內存中Element數量達到maxElementsInMemory時,Ehcache將會Element寫到磁盤中 timeToIdleSeconds:設置Element在失效前的容許閒置時間。僅當element不是永久有效時使用,可選屬性,默認值是0,也就是可閒置時間無窮大 timeToLiveSeconds:設置Element在失效前容許存活時間。最大時間介於建立時間和失效時間之間。僅當element不是永久有效時使用,默認是0.,也就是element存活時間無窮大 diskPersistent:是否緩存虛擬機重啓期數據 diskExpiryThreadIntervalSeconds:磁盤失效線程運行時間間隔,默認是120秒 diskSpoolBufferSizeMB:這個參數設置DiskStore(磁盤緩存)的緩存區大小。默認是30MB。每一個Cache都應該有本身的一個緩衝區 memoryStoreEvictionPolicy:當達到maxElementsInMemory限制時,Ehcache將會根據指定的策略去清理內存。默認策略是LRU(最近最少使用)。你能夠設置爲FIFO(先進先出)或是LFU(較少使用) --> </ehcache>
在spring的applicationContext.xml的配置文件的編寫爲:spring
<!-- 引用ehCache的配置 --> <bean id="defaultCacheManager" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"> <property name="configLocation"> <value>classpath:/ehcache.xml</value> </property> </bean> <!-- 定義ehCache的工廠,並設置所使用的Cache name --> <bean id="ehCache" class="org.springframework.cache.ehcache.EhCacheFactoryBean"> <property name="cacheManager"> <ref local="defaultCacheManager"/> </property> <property name="cacheName"> <value>DEFAULT_CACHE</value> </property> </bean>
如此配置,基本spring整合ehcache就完成了,但仍是要單獨測試一下,編寫一個測試程序:
package cn.com.ecache; import cn.com.container.ServiceProvinder; import net.sf.ehcache.Cache; import net.sf.ehcache.Element; import org.junit.Test; /** * Created by Administrator on 2016/1/24. */ public class TestEcache { @Test public void Test() { Cache cache = (Cache) ServiceProvinder.getService("ehCache"); Element lgElement = new Element("loginName", "xiaxuan"); Element pwElement = new Element("password", "xiaxuan"); cache.put(lgElement); cache.put(pwElement); System.out.println(cache.get("loginName")); } }
測試結果爲:緩存
既能夠存放數據到緩存中,又能夠從緩存中拿到數據,spring和ehcache的整合基本成功。app
如上,就是spring和ehcache整合。maven