手动版配置
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是否有值,判断是否能正常使用缓存。