cacheput注解⽤法_springcache学习——@CachePut使⽤详
1. 功能说明
当需要在不影响⽅法执⾏的情况下更新缓存时,可以使⽤ @CachePut,也就是说,被 @CachePut 注解的缓存⽅法总是会执⾏,⽽且会尝试将结果放⼊缓存(当然,是否真的会缓存还跟⼀些注解参数有关,⽐如:unless 参数)。@CachePut 跟 @Cacheable 有相同的参数属性(但是没有 sync 属性)。@CachePut 更加适合于缓存填充,⽽不是⽅法执⾏流的优化。
由于与 @Cacheable 的属性基本相同,所以不再重复⽰例。这⾥重点说明⼀下它们的区别:
@Cacheable 的逻辑是:查缓存 - 有就返回 -没有就执⾏⽅法体 - 将结果缓存起来;
@CachePut 的逻辑是:执⾏⽅法体 - 将结果缓存起来;
所以 @Cacheable 适⽤于查询数据的⽅法,@CachePut 适⽤于更新数据的⽅法。
2. 下⾯举⼀个例⼦
编写⼀个查询⽅法,使⽤ @Cacheable :
@Override
@Cacheable(value= {"menuById"}, key = "#id")publicMenu findById(String id) {
Menu menu= ById(id);if (menu != null){
System.out.println("menu.name = " +Name());
}returnmenu;
}
再编写⼀个更新⽅法,使⽤ @CachePut :
@Override
@CachePut(value= "menuById", key = "#menu.id")publicMenu ReviseById(Menu menu) {this.updateById(menu);returnmenu;
}
请求⼀遍查询⽅法,结果在缓存中⽣成了数据:
然后请求⼀遍更新⽅法,提交的数据如下:
cacheable再看看缓存中的数据,已经修改了:
这就是 @CachePut 的作⽤了。
另外说⼀下:官⽅强烈不推荐将 @Cacheable 和 @CachePut 注解到同⼀个⽅法。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。