1.先在src创建ehcache.xml配置文件
<ehcache>
<diskStore path="java.io.tmpdir"/>
<defaultCache
maxElementsInMemory="10000"
eternal="false"
timeToIdleSeconds="600"
timeToLiveSeconds="600"
overflowToDisk="true"
/>
<cache name="randomObjCache"
maxElementsInMemory="10000"
eternal="false"
timeToIdleSeconds="600"
timeToLiveSeconds="600"
overflowToDisk="true"
/>
</ehcache>
2.在context中引入cacheManage相关配置,以便在bean中引用cache,这里我在applicationContext-dao.xml中加入
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <bean id="randomDao" class="com.zjr.dao.impl.RandomDaoImpl"> <property name="sqlMapClient" ref="sqlMapClient"/> </bean> <!-- ################### Cache ############################ --> <bean id="defaultCacheManager" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"> <property name="configLocation"> <value>classpath:/ehcache.xml</value> </property> <!-- <property name="configLocation" value="/WEB-INF/conf/ehcache.xml" /> --> </bean> <bean id="randomCache" class="org.springframework.cache.ehcache.EhCacheFactoryBean"> <property name="cacheManager"> <ref local="defaultCacheManager"/> </property> <property name="cacheName"> <value>randomObjCache</value> </property> </bean> <bean id="cacheRandomDao" class="com.zjr.dao.impl.CacheRandomDaoImpl"> <property name="target" ref="randomDao"></property> <property name="cache" ref="randomCache"></property> </bean> <!-- ################### Cache ############################ --> </beans>
3.CacheRandomDaoImpl 中使用
private RandomDao target;
private Cache cache;
private final static String cacheKey = "randomObjCache";
public void setCache(Cache cache) {
this.cache = cache;
}
public List<RandomObj> getCacheRandomObj(Integer flag) {
// TODO Auto-generated method stub
Element element = cache.get(cacheKey);
if (element == null) {
// 当cache中没有数据的时候,从target中取数据,target为实体DAO
List<RandomObj> result = target.getCacheRandomObj(flag);
System.out.println("set into cache");
// cache method result
element = new Element(cacheKey, (Serializable) result);
cache.put(element);
//测试CACHE
// for(int i=0;i<10000;i++){
// element = new Element(cacheKey+i, new RandomObj());
// cache.put(element);
// }
}
System.out.println("out cache");
return (List<RandomObj>)element.getValue();
}
ehcache.xml中的相关属性可参照
http://catastiger.iteye.com/blog/656653
本文介绍如何在Spring框架中整合Ehcache进行缓存管理。首先通过配置ehcache.xml来设置缓存策略,接着在Spring配置文件中定义EhCacheManagerFactoryBean和EhCacheFactoryBean,最后在DAO实现类中注入缓存组件并实现业务逻辑。
8164

被折叠的 条评论
为什么被折叠?



