spring cache

参考博客:

  http://www.ibm.com/developerworks/cn/opensource/os-cn-spring-cache/

  http://www.cnblogs.com/rollenholt/p/4202631.html

 

 1 public class SysParamBO {
 2     private static final Logger LOG = LoggerFactory.getLogger(SysParamBO.class);
 3     private volatile static SysParamBO instance;
 4     private BaseDAO dao;
 5     /**
 6      * 通过spring去获取实体bean对象 
 7      * TODO 注意:这里如果需要从外部调用init方法更新缓存,那么SysParamBO实体必须是通过spring得到的,init方法不能为静态方法
 8      * @author SunAFei
 9      * @return
10      */
11     public SysParamBO getInstance() {
12         if (instance == null) {
13             instance = SpringContextUtil.getBean("SysParamBO");
14         }
15         return instance;
16     }
17     
18     @CacheEvict(value = { "param", "paramLs" }, allEntries = true)
19     public void init() {
20         LOG.info("系统参数缓存被更新!");
21     }
22     
23     @CacheEvict(value = { "param", "paramLs" }, allEntries = true)
24     public void save(SysParam sysParam) {
25         dao.saveUpdate(sysParam);
26         LOG.info("新增了一条数据,同时更新spring缓存");
27         //SysUtils.refreshSysParams();
28     }
29 
30     @CacheEvict(value = { "param", "paramLs" }, allEntries = true)
31     public void delete(SysParam sysParam) {
32         dao.delEntity(sysParam);
33         LOG.info("删除了一条数据,同时更新spring缓存");
34     }
35 
36     @Cacheable(value = "param")
37     public String getParamByKey(String key) {
38         for (SysParam param : getList()) {
39             if (StringUtils.equals(param.getParamKey(), key)) {
40                 return param.getParamValue();
41             }
42         }
43         return null;
44     }
45 
46     @Cacheable(value = "paramLs")
47     public List<SysParam> getList() {
48         LOG.info("缓存被更新了,如果你没有改变数据我不会被调用");
49         return dao.getList(SysParam.class);
50     }
51 
52 }

 

posted @ 2016-11-24 15:41  user_孙  阅读(173)  评论(0)    收藏  举报