springboot使用缓存
目录
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: res
caffeine:
# 设置缓存的初始容量和最大容量,过期时间
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. 配置缓存名称
直接配置固定名称
@Cacheable(cacheNames = "固定名称", key = "key")
动态获取
@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. 遇到的问题(未解决)
在使用的时候遇到一个问题,动态获取缓存名称的时候一直报了一个错误,用了很多方式没法解决,暂时记录下。
错误代码。
报错截图。