美文网首页
spring cache 的 参数 key 赋值

spring cache 的 参数 key 赋值

作者: 良人与我 | 来源:发表于2019-03-27 13:12 被阅读0次

spring的注解可以让我们方便的管理缓存

1 通过参数

@Cacheable(key ="#id")

一般这里会是 id ,但是可能与其它 entity的id重复。

2 前缀加参数

@Cacheable(key = "'com:test:'+#id")

但是给 key 赋值 会导致代码不够优雅,因为 缓存、更新、失效 都要给key赋值。
可以定义全局变量解决此问题
public static final String KEY_NAME = "'com:test:'";
@Cacheable(key = KEY_NAME +"+#id")

3 自定义keyGenerator

@Cacheable(keyGenerator="keyGenerator")

@Bean
    @Override
    public KeyGenerator keyGenerator() {
        return new KeyGenerator() {
            @Override
            public Object generate(Object o, Method method, Object... objects) {
                StringBuilder sb = new StringBuilder();
                //这里可以获取 类的 name
                sb.append(method.getReturnType().getName()).append(".");
                for (Object obj : objects) {
                    sb.append(obj.toString());
                }
                System.out.println("keyGenerator=" + sb.toString());
                return sb.toString();
            }
        };
    }

相关文章

网友评论

      本文标题:spring cache 的 参数 key 赋值

      本文链接:https://www.haomeiwen.com/subject/vxxzvqtx.html