java缓存之Spring配置Ehcache(手动操作版)

手动版配置

1.先加载ehcache的maven包


  net.sf.ehcache
  ehcache
  2.10.2

2.编写ehcache.xml文件,并把它放在resources资源文件夹下



 
  
  
 
  
  
 
  
  

文件中的属性(如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是否有值,判断是否能正常使用缓存。

你可能感兴趣的:(spring)