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 }

浙公网安备 33010602011771号