Spring Cache【娓娓道来】

目录​​​​​​​

1.自我介好😳😳😳

[2.常用注解 💕💕💕](#2.常用注解 💕💕💕)

3.@EnableCaching🤦‍♂️🤦‍♂️🤦‍♂️

4.@CachePut🤷‍♀️🤷‍♀️🤷‍♀️

5.@CacheEvict🎶🎶🎶

[6.@Cacheable 🤩🤩🤩](#6.@Cacheable 🤩🤩🤩)


1.自我介好😳😳😳

Spring Cache是一个框架,实现了基于注解的缓存功能,只需要简单地加一个注解,就能实现缓存功能。Spring Cache提供了一层抽象,底层可以切换不同的cache实现。具体就是通过CacheManager接口来统一不同的缓存技术。

CacheManager是Spring提供的各种缓存技术抽象接口。

2.常用注解 💕💕💕

  • @EnableCaching开启缓存注解功能
  • @Cacheable在方法执行前spring先查看缓存中是否有数据,如果有数据,则直接返回缓存数据;若没有数据,调用方法并将方法返回值放到缓存中
  • @CachePut将方法的返回值放到缓存中
  • @CacheEvict将一条或多条数据从缓存中删除

注意:在spring boot项目中,使用缓存技术只需在项目中导入相关缓存技术的依赖包,并在启动类上使用@EnableCaching开启缓存支持即可。

3.@EnableCaching🤦‍♂️🤦‍♂️🤦‍♂️

@EnableCaching 是启用缓存的注解,标注在任何一个可自动注入的类上即可开启。

java 复制代码
@Slf4j
@SpringBootApplication
@EnableCaching
public class SpirngbootReidsApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpirngbootReidsApplication.class, args);
    }

}

4.@CachePut🤷‍♀️🤷‍♀️🤷‍♀️

  • @CachePut将方法的返回值放到缓存中

value:缓存的名称,每个缓存下面有多个key

key:缓存的key

java 复制代码
 @CachePut(value = "userCache",key = "#result.userId")
    @PostMapping
    public User save(@RequestBody User user){
        userService.save(user);
        return user;
    }

5.@CacheEvict🎶🎶🎶

  • @CacheEvict将一条或多条数据从缓存中删除

value:缓存名称,每个缓存名称下面可以有多个key

key:缓存key

删除

java 复制代码
 @CacheEvict(value = "userCache", key = "#id")
    @DeleteMapping("/{id}")
    public void delete(@PathVariable("id") Integer id) {
        userService.removeById(id);
    }

修改

java 复制代码
  @CacheEvict(value = "userCache",key = "#user.userId")
    @PutMapping
    public User update(@RequestBody User user) {
        userService.updateById(user);
        return user;
    }

6.@Cacheable 🤩🤩🤩

  • @Cacheable在方法执行前spring先查看缓存中是否有数据,如果有数据,则直接返回缓存数据;若没有数据,调用方法并将方法返回值放到缓存中

value:缓存名称,每个缓存名称下面可以有多个key

key:缓存key

condition:条件,满足条件时才缓存数据

unless: 满足条件,不缓存

java 复制代码
   @Cacheable(value = "userCache", key = "#id", condition = "#result!=null")
    @GetMapping(value = "/{id}")
    public User get(@PathVariable("id") Integer id) {
        User user = userService.getById(id);
        return user;
    }
java 复制代码
  @Cacheable(value = "userCache", key = "#id", unless = "#result==null")
    @GetMapping(value = "/{id}")
    public User get(@PathVariable("id") Integer id) {
        User user = userService.getById(id);
        return user;
    }

相关推荐
Moment9 分钟前
Node.js v25.0.0 发布——性能、Web 标准与安全性全面升级 🚀🚀🚀
前端·javascript·后端
速易达网络20 分钟前
Java Web登录系统实现(不使用开发工具)
java·开发语言·前端
IT_陈寒23 分钟前
Vite 3.0 性能优化实战:5个技巧让你的构建速度提升200% 🚀
前端·人工智能·后端
瑞士卷@41 分钟前
spring从入门到精通(spring学习笔记,持续更新中)
笔记·学习·spring
程序新视界42 分钟前
MySQL的整体架构及功能详解
数据库·后端·mysql
绝无仅有44 分钟前
猿辅导Java面试真实经历与深度总结(二)
后端·面试·github
悟能不能悟1 小时前
java重构旧代码有哪些注意的点
java·开发语言·重构
绝无仅有1 小时前
猿辅导Java面试真实经历与深度总结(一)
后端·面试·github
怪兽20142 小时前
Redis过期键的删除策略有哪些?
java·数据库·redis·缓存·面试
Victor3562 小时前
Redis(76)Redis作为缓存的常见使用场景有哪些?
后端