美文网首页
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