目录
1. 添加依赖
2. 配置缓存
3. 使用@EnableCaching注解开启缓存
4. 使用注解
1. 配置缓存名称
2. 配置缓存的键
3. 移除缓存
5. 运行结果
1. 添加依赖
<!-- springboot缓存--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache</artifactId></dependency>
<!-- 具体使用的缓存:caffeine--><dependency><groupId>com.github.ben-manes.caffeine</groupId><artifactId>caffeine</artifactId></dependency>
2. 配置缓存
application.yml
spring:cache:type: caffeine
# 设置缓存的名字cache-names: rescaffeine:
# 设置缓存的初始容量和最大容量,过期时间spec: initialCapacity=100,maximumSize=500,expireAfterWrite=10m
application.properties
spring.cache.type=caffeine
# 设置缓存的名字
spring.cache.cache-names=res
# 设置缓存的初始容量和最大容量,过期时间
spring.cache.caffeine.spec=initialCapacity=100,maximumSize=500,expireAfterWrite=10m
3. 使用@EnableCaching注解开启缓存
在配置类上添加以下注解,开启缓存。
@EnableCaching
4. 使用注解
在需要缓存的方法上使用 @Cacheable
注解。@Cacheable
注解用于标记一个方法,使其返回值可以被缓存。
1. 配置缓存名称
直接配置固定名称
java">@Cacheable(cacheNames = "固定名称", key = "key")
动态获取
java">@Service
public class ProductService {@Cacheable(cacheNames = "#{@cacheNameProvider.getCacheName()}", key = "#productId")public Product getProductById(Long productId) {// 模拟从数据库获取数据return new Product(productId, "Product Name");}
}
//-----------------其他类--------------
@Component
public class CacheNameProvider {public String getCacheName() {// 动态生成缓存名称return "dynamicProducts";}
}
2. 配置缓存的键
配置固定值。
配置值为方法参数。
配置值为多个方法参数的拼接。
3. 移除缓存
5. 运行结果
6. 遇到的问题(未解决)
在使用的时候遇到一个问题,动态获取缓存名称的时候一直报了一个错误,用了很多方式没法解决,暂时记录下。
错误代码。
报错截图。