@Cacheable 的Key 如何正确使用
时间: 2024-03-28 11:09:33 浏览: 195
@Cacheable 注解是用于启用方法级别的缓存的,它可以将方法的返回值缓存起来,当相同的参数再次调用该方法时,会直接返回缓存中的结果,而不会执行方法体。
@Cacheable 注解有一个 key 属性,用于指定缓存的键。key 属性可以是 SpEL 表达式,用于动态生成缓存的键。你可以在 SpEL 表达式中使用方法的参数或其他相关信息来构建唯一的缓存键。
以下是几种常见的使用方式:
1. 使用方法的参数作为缓存键:
```java
@Cacheable(value = "myCache", key = "#param")
public Object myMethod(String param) {
// 方法体
}
```
2. 使用多个参数作为缓存键:
```java
@Cacheable(value = "myCache", key = "#param1 + ':' + #param2")
public Object myMethod(String param1, String param2) {
// 方法体
}
```
3. 使用对象的属性作为缓存键:
```java
@Cacheable(value = "myCache", key = "#obj.id")
public Object myMethod(MyObject obj) {
// 方法体
}
```
4. 使用自定义的 SpEL 表达式作为缓存键:
```java
@Cacheable(value = "myCache", key = "T(com.example.CacheKeyGenerator).generateKey(#param)")
public Object myMethod(String param) {
// 方法体
}
```
在使用 @Cacheable 注解时,需要确保生成的缓存键是唯一的,以避免出现缓存冲突的情况。可以根据具体的业务需求来选择合适的缓存键生成方式。
阅读全文