zoukankan      html  css  js  c++  java
  • spring对缓存的使用@Cacheable

    @Cacheable(value = "CACHE_BOOK",key = "#username", condition = "#language = 1")
    public List<Book> getBooksByUsernameAndLanguage(String username, int language) {
         // balabalabala...里面的代码不重要
         return bookList;
    }

    @Cacheable注解只有三个属性。

    • value : 必须要的。就是个自己取的名字,通过它指明了第一次调用这个方法时返回的bookList将被存在内存的哪里。
    • key : 可选。要使用SpEL表达式,这里与参数username对应,当传入的username值变了的话就不去取缓存里的数据了,而是执行getBooksByUsernameAndLanguage方法。(这是必须的,因为username变了,返回值也就变了,缓存里的数据不符合了,因此这个选项很重要)。spring默认用方法的签名来当做key。
    • condition:方法返回的结果bookList,要不要缓存起来?condition就添加了一个限定条件。这个例子中,只有传入的语言代码是1,返回的bookList才会被缓存起来,如果给language传了别的值,那么bookList是不会缓存起来的。

     注意事项:1、@Cacheable必须开启缓存在启动类上@EnableCaching

          2、返回的对象要实现缓存该对象是必须实现序列化接口的Serializable

          3、@Cacheable不可用在私有方法上面,可以放在接口和具体的方法上面

          4、@Cacheable这个注解是放在具体的方法上;

          5、@CacheConfig这个注解只能放在类上代表这个类所有缓存的公共属性配置,比如value等非必须;

          6、key = "#对象.属性"或者直接使用key = "#属性";直接读取的是方法形参内的参数属性或者对象;

         7、key = "#对象.属性.concat('Hydrologydata')"

      

    春有百花秋有月,夏有凉风冬有雪!
  • 相关阅读:
    js实现年月日三级联动
    Java_Web之俱乐部会员信息管理系统
    JQuery特效之心形图片墙
    Java_Web之宠物管理系统
    JavaScript特效之图片特效放大,缩小,旋转
    使用Ajax验证用户名
    Java_Web之神奇的Ajax
    js动态操作订单表格
    tab切换
    树型菜单
  • 原文地址:https://www.cnblogs.com/wwwcf1982603555/p/14593270.html
Copyright © 2011-2022 走看看