码迷,mamicode.com
首页 > 编程语言 > 详细

spring对缓存的使用@Cacheable

时间:2021-03-30 13:51:01      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:ali   log   zab   表达   不可用   注意事项   book   value   缓存   

@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‘)"

  

spring对缓存的使用@Cacheable

标签:ali   log   zab   表达   不可用   注意事项   book   value   缓存   

原文地址:https://www.cnblogs.com/wwwcf1982603555/p/14593270.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有
迷上了代码!