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;
    }

相关推荐
贫民窟的勇敢爷们1 小时前
SpringBoot整合AOP切面编程实战,实现日志统一记录+接口权限校验
java·spring boot·spring
candyTong2 小时前
Claude Code Agent Teams:多 Agent 协作的生命周期与实现机制
后端·架构
AC赳赳老秦2 小时前
供应链专员提效:OpenClaw自动跟踪物流信息、更新库存数据,异常自动提醒
java·大数据·服务器·数据库·人工智能·自动化·openclaw
迈巴赫车主2 小时前
Java基础:list、set、map一遍过
java·开发语言
灵犀学长3 小时前
基于 Spring ThreadPoolTaskScheduler + CronTrigger 实现的动态定时任务调度系统
java·数据库·spring
好家伙VCC4 小时前
【无标题】
java
小碗羊肉5 小时前
【JavaWeb | 第十一篇】文件上传(本地&阿里云OSS)
java·阿里云·servlet
吾疾唯君医5 小时前
Java SpringBoot集成积木报表实操记录
java·spring boot·spring·导出excel·积木报表·数据文件下载
Byron Loong5 小时前
【c++】为什么有了dll和.h,还需要包含lib
java·开发语言·c++
hexu_blog6 小时前
vue+java实现图片批量压缩
java·前端·vue.js