Springboot使用@Cacheable注解实现数据缓存
1、添加 @EnableCaching
使用 @EnableCaching
标识在 SpringBoot 的主启动类上,开启基于注解的缓存。
@EnableCaching public class Application { public static void main(String[] args) { SpringApplication.run(Application .class, args); } }
2、添加@Cacheable
在需要缓存的方法上添加
@Cacheable注解。以后查询相同的数据,直接从缓存中取,不需要调用方法。
@Cacheable(value = "areaTreeData") public CommonResult<List<Map<String, Object>>> queryTreeData(Long pId, Long lv) { Map<String, Object> map = new HashMap<>(); map.put("state", 1); List<Map<String, Object>> list = getTreeData(map, pId, lv); return new CommonResult<>(list); }
注意:
1、返回的数据类型必须支持序列化或实现了Serializable接口,否则数据没法缓存。
2、只有直接调用该方法才能缓存,不能通过类中的其他方法来调用。
3、常用属性说明
- cacheNames/value :用来指定缓存组件的名字
- key :缓存数据时使用的 key,可以用它来指定。默认是使用方法参数的值。(这个 key 你可以使用 spEL 表达式来编写)
- keyGenerator :key 的生成器。 key 和 keyGenerator 二选一使用
- cacheManager :可以用来指定缓存管理器。从哪个缓存管理器里面获取缓存。
- condition :可以用来指定符合条件的情况下才缓存
- unless :否定缓存。当 unless 指定的条件为 true ,方法的返回值就不会被缓存。当然你也可以获取到结果进行判断。(通过 #result 获取方法结果)
- sync :是否使用异步模式。
4、@CacheEvict注解
@CachEvict 的作用 主要针对方法配置,能够根据一定的条件对缓存进行清空。常用属性参数如下:
参数 | 解释 | example |
---|---|---|
value | 缓存的名称,在 spring 配置文件中定义,必须指定至少一个 | @CacheEvict(value=”my cache”) |
key | 缓存的 key,可以为空,如果指定要按照 SpEL 表达式编写,如果不指定,则缺省按照方法的所有参数进行组合 | @CacheEvict(value=”testcache”,key=”#userName”) |
condition | 缓存的条件,可以为空,使用 SpEL 编写,返回 true 或者 false,只有为 true 才进行缓存 | @CacheEvict(value=”testcache”,condition=”#userName.length()>2”) |
allEntries | 是否清空所有缓存内容,缺省为 false,如果指定为 true,则方法调用后将立即清空所有缓存 | @CachEvict(value=”testcache”,allEntries=true) |
beforeInvocation | 是否在方法执行前就清空,缺省为 false,如果指定为 true,则在方法还没有执行的时候就清空缓存,缺省情况下,如果方法执行抛出异常,则不会清空缓存 | @CachEvict(value=”testcache”,beforeInvocation=true) |
@CacheEvict(value = "areaTreeData", allEntries = true, beforeInvocation = true) public Integer save(SysArea sysArea) { return mapper.insertSelective(sysArea); }
以上就是Springboot使用@Cacheable注解实现数据缓存的详细内容,更多关于Springboot数据缓存的资料请关注脚本之家其它相关文章!
相关文章
java中fastjson生成和解析json数据(序列化和反序列化数据)
本篇文章主要介绍了java中fastjson生成和解析json数据(序列化和反序列化数据),具有一定的参考价值,感兴趣的小伙伴们可以参考一下。2017-02-02SpringBoot 使用@WebMvcTest测试MVC Web Controller
这篇文章主要介绍了SpringBoot 使用@WebMvcTest测试MVC Web Controller,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-11-11解决Springboot2.1.x配置Activiti7单独数据源问题
这篇文章主要介绍了Springboot2.1.x配置Activiti7单独数据源问题,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下2019-09-09springboot集成本地缓存Caffeine的三种使用方式(小结)
本文主要介绍了springboot集成本地缓存Caffeine的三种使用方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2022-06-06
最新评论