java ehcache手动关闭_java缓存之Spring配置Ehcache(手动操作版)

手动版配置

1.先加载ehcache的maven包

net.sf.ehcache

ehcache

2.10.2

2.编写ehcache.xml文件,并把它放在resources资源文件夹下<?xml version="1.0" encoding="UTF-8"?>

xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd">

maxEntriesLocalHeap="10000"

eternal="false"

timeToIdleSeconds="120"

timeToLiveSeconds="120"

maxEntriesLocalDisk="10000000"

diskExpiryThreadIntervalSeconds="120"

memoryStoreEvictionPolicy="LRU"/>

maxElementsInMemory="1000"

eternal="false"

timeToIdleSeconds="5"

timeToLiveSeconds="5"

overflowToDisk="false"

memoryStoreEvictionPolicy="LRU"/>

文件中的属性(如maxElementsInMemory等)可自行百度查询意义。

3.编写Ehcache工具类import net.sf.ehcache.Cache;

import net.sf.ehcache.CacheManager;

import net.sf.ehcache.Element;

import org.springframework.core.io.Resource;

import java.io.IOException;

public class EhcahceManager

{

private Resource cacheManagerPath;

public Resource getCacheManagerPath() {

return cacheManagerPath;

}

public void setCacheManagerPath(Resource cacheManagerPath) {

this.cacheManagerPath = cacheManagerPath;

}

public CacheManager getCacheManager() throws IOException {

CacheManager cacheManager=CacheManager.create(getCacheManagerPath().getInputStream());

return cacheManager;

}

public void set(String key,Object obj,String cacheName) throws IOException {

CacheManager cacheManager=CacheManager.create(getCacheManagerPath().getInputStream());

Cache cache=cacheManager.getCache(cacheName);

Element element=new Element(key,obj);

cache.put(element);

}

public Object get(String key,String cacheName) throws IOException {

CacheManager cacheManager=CacheManager.create(getCacheManagerPath().getInputStream());

Cache cache=cacheManager.getCache(cacheName);

Element value=cache.get(key);

if (value!=null)

{

Object object=value.getObjectValue();

return object;

}else

{

return null;

}

}

public void remove(String key,String cacheName) throws IOException {

CacheManager cacheManager=CacheManager.create(getCacheManagerPath().getInputStream());

Cache cache=cacheManager.getCache(cacheName);

cache.remove(key);

}

public void removeAll(String cacheName) throws IOException {

CacheManager cacheManager=CacheManager.create(getCacheManagerPath().getInputStream());

Cache cache=cacheManager.getCache(cacheName);

cache.removeAll();

}

}

4.在spring.xml文件配置缓存工具类

5.在service层的UserService引入ehcacheManager@Autowired

private EhcacheManager ehcacheManager;

//setEhcacheManager()

public User findUserById(int id)

{

Object object=ehcacheManager.get(id,"helloworld");//helloworld是缓存的name

if(object!=null)

{

User user=(User)object;

return user;

}

User user=userMapper.findUserById(id);

ehcacheManager.set(id,user,"helloworld");

return user;

}

其中User必须序列化;在断点调试时,会明显看到object是否有值,判断是否能正常使用缓存。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值