java代碼:
package com.roncoo.eshop.cache.configuration;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cache.ehcache.EhCacheCacheManager;
import org.springframework.cache.ehcache.EhCacheManagerFactoryBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.ClassPathResource;
/**
* 緩存配置管理類
* @author Administrator
*
*/
@Configuration
@EnableCaching
public class CacheConfiguration {
@Bean
public EhCacheManagerFactoryBean ehCacheManagerFactoryBean() {
EhCacheManagerFactoryBean ehCacheManagerFactoryBean = new EhCacheManagerFactoryBean();
ehCacheManagerFactoryBean.setConfigLocation(new ClassPathResource("ehcache.xml"));
ehCacheManagerFactoryBean.setShared(true);
return ehCacheManagerFactoryBean;
}
@Bean
public EhCacheCacheManager ehCacheCacheManager(EhCacheManagerFactoryBean ehCacheManagerFactoryBean) {
return new EhCacheCacheManager(ehCacheManagerFactoryBean.getObject());
}
}
配置文件:
<?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:ehcache其實是支持內存+磁盤+堆外內存,幾個層級的緩存 -->
<!-- 在這裏設置一下,但是一般不用的 -->
<diskStore path="java.io.tmpdir/Tmp_EhCache" />
<!-- defaultCache,是默認的緩存策略 -->
<!-- 如果你指定的緩存策略沒有找到,那麼就用這個默認的緩存策略 -->
<!-- external:如果設置爲true的話,那麼timeout就沒有效果,緩存就會一直存在,一般默認就是false -->
<!-- maxElementsInMemory:內存中可以緩存多少個緩存條目,在實踐中,你是需要自己去計算的,比如你計算你要緩存的對象是什麼?有多大?最多可以緩存多少MB,或者多少個G的數據?除以每個對象的大小,計算出最多可以放多少個對象 -->
<!-- overflowToDisk:如果內存不夠的時候,是否溢出到磁盤 -->
<!-- diskPersistent:是否啓用磁盤持久化的機制,在jvm崩潰的時候和重啓之間,不用 -->
<!-- timeToIdleSeconds:對象最大的閒置的時間,如果超出閒置的時間,可能就會過期,我們這裏就不用了,緩存最多閒置5分鐘就被幹掉了 -->
<!-- timeToLiveSeconds:對象最多存活的時間,我們這裏也不用,超過這個時間,緩存就過期,就沒了 -->
<!-- memoryStoreEvictionPolicy:當緩存數量達到了最大的指定條目數的時候,需要採用一定的算法,從緩存中清除一批數據,LRU,最近最少使用算法,最近一段時間內,最少使用的那些數據,就被幹掉了 -->
<defaultCache
eternal="false"
maxElementsInMemory="1000"
overflowToDisk="false"
diskPersistent="false"
timeToIdleSeconds="300"
timeToLiveSeconds="0"
memoryStoreEvictionPolicy="LRU" />
<!-- 手動指定的緩存策略 -->
<!-- 比如你一個應用吧,可能要緩存很多種不同的數據,比如說商品信息,或者是其他的一些數據 -->
<!-- 對不同的數據,緩存策略可以在這裏配置多種 -->
<cache
name="local"
eternal="false"
maxElementsInMemory="1000"
overflowToDisk="false"
diskPersistent="false"
timeToIdleSeconds="300"
timeToLiveSeconds="0"
memoryStoreEvictionPolicy="LRU" />
<!-- ehcache這種東西,簡單實用,是很快速的,1小時上手可以用在項目裏了,沒什麼難度的 -->
<!-- ehcache這個技術,如果講深了,裏面的東西還是很多的,高級的feature,但是我們這裏就不涉及了 -->
</ehcache>