springboot2入门到实战-spring缓存

Springboot缓存

启动缓存@EnableCaching

@Cacheable

@Cacheable 注解就可以将运行结果缓存,以后查询相同的数据,直接从缓存中取,不需要调用方法。

java 复制代码
@Cacheable(cacheNames = "findAll")
@Override
public List<BookType> findAll() {
    List<BookType> bookTypes = bookTypeDao.selectList(null);
    return bookTypes;
}
序列 参数 解释
1 cacheNames 指定缓存组件的名字
2 key 缓存数据时使用的key,默认使用方法参数
3 keyGenerator key 的生成器。 key 和 keyGenerator 二选一使用
4 cacheManager 可以用来指定缓存管理器。从哪个缓存管理器里面获取缓存。
5 condition 可以用来指定符合条件的情况下才缓存
6 unless 否定缓存。当 unless 指定的条件为 true ,方法的返回值就不会被缓存。当然你也可以获取到结果进行判断
7 sync 是否使用异步模式。
java 复制代码
@Cacheable(cacheNames = "findByName",key = "#name")
@Override
public List<BookType> findByName(String name) {
    LambdaQueryWrapper<BookType> queryWrapper = new LambdaQueryWrapper<>();
    queryWrapper.like(BookType::getName, name);

    List<BookType> bookTypes = bookTypeDao.selectList(queryWrapper);

    return bookTypes;
}

@CachePut

@CachePut也可以声明一个方法支持缓存功能。与@Cacheable不同的是使用@CachePut标注的方法在执行前不会去检查缓存中是否存在之前执行过的结果,而是每次都会执行该方法,并将执行结果以键值对的形式存入指定的缓存中。

java 复制代码
@CachePut(cacheNames = "findAll")
@Override
public List<BookType> findAll() {
    List<BookType> bookTypes = bookTypeDao.selectList(null);
    return bookTypes;
}

@CacheEvict

@CacheEvict是用来标注在需要清除缓存元素的方法或类上的。当标记在一个类上时表示其中所有的方法的执行都会触发缓存的清除操作。

key: 从缓存块中移出的key值

java 复制代码
@Cacheable(cacheNames = "privses",key = "#id")
@Override
public Privs findById(Long id) {
    return privsDao.findById(id).get();
}

@CacheEvict(cacheNames = "privses",key="#id")
@Override
public void delById(long id) {
   // privsDao.deleteById(id);
    System.out.println("数据库删除:"+id+"完成....,更新缓存");
}
相关推荐
成旭先生7 小时前
企业全景信息查询 API:工商照面 33 项、股东出资、变更与社保一次查全
java·开发语言·api接口·企业信息查询·工商数据·风控尽调·供应商准入
她的男孩7 小时前
分片上传的大文件人人可下载:文件模块 isPrivate 在合并时被抹成 false,另有 4 个静默坑
java·后端·架构
SWAGGY..7 小时前
【C++进阶】:(7)红黑树的原理与 C++ 实现:结构设计、插入调整及性质验证
android·java·开发语言·c++·算法
Wang's Blog8 小时前
Java框架 SpringCloud 快速入门: Eureka 服务发现与服务名调用改造
java·spring cloud·eureka
夕除8 小时前
redis--OpenResty
java·redis
Wang's Blog8 小时前
Java框架 SpringCloud 快速入门: Eureka 注册中心原理分析
java·spring cloud·eureka
她说彩礼65万8 小时前
C语言 assert
java·linux·c语言
vx-程序开发8 小时前
【计算机毕设】52744基于微信小程序的民宿智能预订系统
java·spring boot·毕业设计·源码·课程设计·毕设·大作业
Wang's Blog8 小时前
Java框架 SpringCloud 快速入门: Eureka 服务注册
java·spring cloud·eureka
liangshanbo12158 小时前
请求拦截器相关面试题
java·前端·javascript