给@Cacheable注解cacheNames属性动态赋值
时间: 2023-07-10 10:21:28 浏览: 382
在Spring中,使用 `@Cacheable` 注解可以实现对方法的返回值进行缓存。其中,`cacheNames` 属性用于指定缓存的名称,可以在配置文件中进行配置。下面是如何实现 `@Cacheable` 注解的 `cacheNames` 属性动态赋值的方法:
1. 创建一个缓存配置类
首先,在配置类中使用 `@ConfigurationProperties` 注解将配置文件中的缓存名称注入到类的属性中。
```
@Configuration
@ConfigurationProperties(prefix = "cache")
public class CacheConfig {
private String cacheName;
public String getCacheName() {
return cacheName;
}
public void setCacheName(String cacheName) {
this.cacheName = cacheName;
}
}
```
在上面的代码中,`cacheName` 属性用于存储配置文件中的缓存名称。
2. 在配置文件中配置缓存名称
在配置文件中配置缓存名称,例如:
```
cache.cacheName=myCache
```
3. 使用 `@Cacheable` 注解
在需要缓存的方法上使用 `@Cacheable` 注解,并将 `cacheNames` 属性动态赋值。
```
@Service
public class MyService {
@Autowired
private CacheConfig cacheConfig;
@Cacheable(cacheNames = "#{@cacheConfig.getCacheName()}")
public Object myMethod() {
// ...
}
}
```
在上面的代码中,`@Cacheable` 注解的 `cacheNames` 属性使用了 SpEL 表达式 `#{@cacheConfig.getCacheName()}`,将缓存名称动态赋值为 `cacheConfig` 中的 `cacheName` 属性的值。
这样就实现了 `@Cacheable` 注解的 `cacheNames` 属性的动态赋值。
阅读全文