博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring Cachable Key的定义及应用
阅读量:7110 次
发布时间:2019-06-28

本文共 2033 字,大约阅读时间需要 6 分钟。

Spring缓存注解Cacheable, 主要几个参数说明:

  • value 即cacheName,集成ehcache时,会以该命名创建一个cache,cache中再存储不同的key-value。
  • key,缓存对象的唯一标识,集成redis时,key的定义需要严格区分,不能简单的按照某个变量来定义,因为cacheName并不能起到区分缓存的作用。
  • keyGenerator 自定义的key值生成器,下面会有demo实现。
  • cacheManager 选择指定的缓存管理器,一般使用默认管理器,不需要特别指定,
  • cacheResolver 定义如何访问缓存列表,默认SimpleCacheResolver实现,NamedCacheResolver也比较常见。
  • condition 满足缓存条件(SPEL表达式)的数据才会放入缓存,condition在调用方法之前和之后都会判断。
  • unless 用于否决缓存更新的,不同于condition,unless的SPEL表达式仅在方法执行之后判断

下面以Redis集成为例,介绍key的主要用法。

自定义KeyGenerator

@Bean    public KeyGenerator myKeyGenerator() {        return new KeyGenerator() {            @Override            public Object generate(Object o, Method method, Object... params) {                StringBuilder sb = new StringBuilder();                sb.append(o.getClass().getName());                sb.append(method.getName());                sb.append("(");                for (Object param : params) {                    sb.append(param.toString());                    sb.append(",");                }                sb.append(")");                return sb.toString();            }        };    }

固定key示例

@Cacheable(value = CacheConsts.MASTER_SYSTEMCONFIG_CACHE_KEY, key = "'SYSTEMCONFIG_MAP'")    public Map
loadSystemConfigMap() {

变量key示例

@Cacheable(value = CacheConsts.WS_FILTER_TIME_KEY, key = CacheConsts.WS_FILTER_TIME_KEY + "#appId")    public List
loadByAppId(String appId) {
@Cacheable(value = CacheConsts.MASTER_CITY_CACHE_KEY, key = CacheConsts.MASTER_CITY_CACHE_KEY + "#exchangeRateEntity.currency")    public List
loadExchangeRate(ExchangeRateEntity exchangeRateEntity) {

自定义Key示例

@Cacheable(value = CacheConsts.WS_PRICE_RULE_KEY, keyGenerator = "myKeyGenerator")

condition示例

@Cacheable(value = CacheConsts.MASTER_CITY_CACHE_KEY, key = CacheConsts.MASTER_CITY_CACHE_KEY + "#exchangeRateEntity.currency",condition = "#exchangeRateEntity.currency ne  'CNY' ")    public List
loadExchangeRate(ExchangeRateEntity exchangeRateEntity) {

转载于:https://blog.51cto.com/10705830/2162382

你可能感兴趣的文章
MySQL数据类型及列类型
查看>>
PHP 查找链表倒数第i个节点
查看>>
一个简单的基于编辑距离的英文单词查错(Python) - Muilpin.Miao的日志 - 网易博客...
查看>>
JavaScript试题【解析+答案】
查看>>
链接相关 & 预处理
查看>>
Oracle Applications 相关文档
查看>>
1300万像素高清双核旗舰 索尼LT30p评测_手机_科技时代_新浪网
查看>>
《BOOST程序库完全开发指南》 第06章 正确性与测试
查看>>
LinkedHashMap
查看>>
A lunch in Gordon Market with WWF
查看>>
深蓝词库转换1.9发布——支持英库拼音、搜狗bin格式、FIT、中州韵等
查看>>
Listview首列固定,不能移动到其他列
查看>>
升级TFS2012查看SOURCE-history部分提示TF14045: The identity xxx is not a recognized identity
查看>>
python 可以写 桌面应用程序不?需要依赖 python 么?python 是不是 类似.net framework?...
查看>>
【Web技术学习】PHP学习笔记
查看>>
(转)理解SQLSERVER中的排序规则
查看>>
sizeof和strlen与带汉字字符的
查看>>
TCP 套接字函数
查看>>
安卓Android手机系统内文件夹目录解释
查看>>
IOS UIImage 内存细节
查看>>