Persistence

Spring 缓存——@Cacheable

2016-10-21  本文已影响134人  东方一号蓝

原创性声明:本文完全为笔者原创,请尊重笔者劳动力。转载务必注明原文地址。

@Cacheable 是一个既可以应用于方法级别,也可用于类级别的注解。自spring3.1开始就通过它实现了缓存管理。

  1. @Cacheable能干什么?
    为了通俗易懂的理解,举个栗子:一个方法,getBooksByUsernameAndLanguage(String username, int language),显然,是一个获取数据库里所有我的英文书对象的方法,返回应该是一个列表。如果这个函数的返回值很大,而且会在页面上被经常调用,那么每一次调用都要重新连接数据库并返回一个数据量庞大的list,可能页面响应和资源占用会比较大。而我们希望的是,第一次调用这个方法时,返回的数据能被放到服务器端的缓存里,以便于后面要调用这个方法时,能直接从缓存里取到,这样就不用再查数据库占用资源了。而@Cacheable的作用就是这个。

  2. @Cacheable怎么用?
    举个栗子(我就喜欢直接上代码,简单粗暴):

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

看code,@Cacheable注解只有三个属性。

下次再遇到页面刷新后数据还不更新的问题时,记得看看是不是@Cacheable搞的鬼。

补充: 事实上,第二次调用方法时,spring会在执行getBooksByUsernameAndLanguage方法前先去缓存里看是否有相应的数据,有,则不会执行方法。没有,才执行。

上一篇下一篇

猜你喜欢

热点阅读