BlogApp開發之spring整合ehcache

                 在這篇博客的創做中,須要用到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

相關文章
相關標籤/搜索