SpringBoot缓存相关注解的使用

@CacheConfig:主要用于配置该类中会用到的一些共用的缓存配置

@Cacheable:主要方法的返回值将被加入缓存。在查询时,会先从缓存中获取,若不存在才再发起对数据库的访问

@CachePut:主要用于数据新增和修改操作

@CacheEvict:配置于函数上,通常用在删除方法上,用来从缓存中移除相应数据

这些注解通常用于 Spring Framework 中对方法的缓存配置。以下是这些注解的简单使用案例:

@CacheConfig:配置类的缓存公共设置

java 复制代码
@CacheConfig(cacheNames = "myCache")
public class MyService {
    // ...
}

这里配置了类中方法默认使用名为 "myCache" 的缓存。

@Cacheable:查询方法的返回值将被加入缓存

java 复制代码
@Cacheable
public String findById(Long id) {
    // 查询数据库的操作
    return "result";
}

查询方法 findById 的返回值将被加入缓存,下次调用该方法时,如果传入的 id 已经在缓存中存在,则直接从缓存中获取,而不是执行方法体。

@CachePut:新增和修改操作

java 复制代码
@CachePut
public String updateData(Long id, String newData) {
    // 更新数据库的操作
    return newData;
}

新增或修改方法 updateData 的返回值将被加入缓存。与 @Cacheable 不同的是,@CachePut 注解会每次都执行方法体,并将结果加入缓存。

@CacheEvict:删除操作

java 复制代码
@CacheEvict
public void deleteById(Long id) {
    // 删除数据库中对应 id 的数据
}

删除方法 deleteById 被调用时,会从缓存中移除对应 id 的缓存项。

这些注解可以与缓存管理器一起使用,例如结合 EhCache 或 Redis 等实现具体的缓存操作。在使用这些注解时,通常需要在 Spring 配置文件中配置相应的缓存管理器。

相关推荐
这儿有个昵称8 小时前
互联网大厂Java面试场景:从Spring Boot到微服务架构
java·spring boot·消息队列·微服务架构·大厂面试·数据库优化
難釋懷8 小时前
Redis桌面客户端
数据库·redis·缓存
填满你的记忆8 小时前
【从零开始——Redis 进化日志|Day5】分布式锁演进史:从 SETNX 到 Redisson 的完美蜕变
java·数据库·redis·分布式·缓存
hanqunfeng8 小时前
(四十)SpringBoot 集成 Redis
spring boot·redis·后端
lendsomething8 小时前
Spring 多数据源事务管理,JPA为例
java·数据库·spring·事务·jpa
難釋懷8 小时前
Jedis快速入门
redis·缓存
小北方城市网9 小时前
SpringBoot 集成 MinIO 实战(对象存储):实现高效文件管理
java·spring boot·redis·分布式·后端·python·缓存
小毅&Nora9 小时前
【后端】【工具】Caffeine的终极解析:从“智能冰箱“到高性能缓存的革命
缓存·caffeine
曹轲恒9 小时前
SpringBoot配置文件(1)
java·spring boot·后端
码农水水9 小时前
得物Java面试被问:大规模数据的分布式排序和聚合
java·开发语言·spring boot·分布式·面试·php·wpf