一、概述
Spring Cache 是一个框架,实现了基于注解的缓存功能,只需要简单地加一个注解,就能实现缓存功能。
Spring Cache 提供了一层抽象,底层可以切换不同的缓存实现,例如:
-  EHCache 
-  Caffeine 
-  Redis(常用) 
起步依赖:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache</artifactId>  		            		       	 <version>2.7.3</version> 
</dependency>二、使用
1、添加依赖
确保项目中已经添加了spring cache的起步依赖。然后,根据你选择的缓存提供者(例如Redis、EhCache等),可能需要添加相应的依赖。如果你只是想使用Spring自带的简单缓存,那么无需额外添加依赖。
2、启用缓存支持
在Spring Boot项目中,需要通过在一个配置类上添加@EnableCaching注解来启用缓存支持。这个注解会触发一个Spring Cache的搜索机制来配置相应的缓存管理器(CacheManager)。这个注解也可以直接配置在启动项上。
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.Configuration;@Configuration
@EnableCaching
public class CacheConfig {// 这里可以定义一些缓存相关的额外配置
}3. 配置缓存管理器
Spring Cache抽象支持多种缓存解决方案,但通常你需要根据项目需要选择并配置一个合适的缓存管理器。例如,如果你使用Redis作为缓存存储,你需要配置一个RedisCacheManager。简单的说,就是在项目的application.properties或application.yml文件中添加必要的配置:
# 以下是使用Redis作为缓存时的配置示例
spring.cache.type=redis
spring.redis.host=localhost
spring.redis.port=63794. 使用缓存注解
在准备完成后,你可以在服务类或方法上使用Spring Cache提供的注解来实现缓存策略。常用的缓存注解包括:
| 注解 | 作用 | 
|---|---|
| @Cacheable | 在方法执行前Spring先查看缓存中是否有数据,如果有数据,则直接返回缓存数据;没有则调用方法并将方法返回值存放到缓存中。 | 
| @CachePut | 无论如何都会执行方法,并将返回值存放到缓存中,主要用于更新缓存数据。 | 
| @CacheEvict | 移除缓存数据,可以指定一个缓存或多个缓存,还可以表明是移除这些缓存的全部数据还是某个特定的数据。 | 
| @Caching | 组合多个缓存注解使用,可以同时应用 @Cacheable,@CachePut和@CacheEvict。 | 
| @CacheConfig | 类级别的注解,用于共享缓存的名称、key生成器、缓存管理器等配置。 |