Spring Cache 怎么通过 CacheManager 获取 Cache 对象,然后调用 Cache 对象的 put 方法将数据放入缓存中。和从缓存中读取数据
时间: 2024-02-19 14:59:01 浏览: 162
要通过 CacheManager 获取 Cache 对象,需要先在 Spring 上下文中配置 CacheManager 的实现类,如下所示:
```java
@Configuration
@EnableCaching
public class CacheConfig extends CachingConfigurerSupport {
@Bean
public CacheManager cacheManager() {
// 创建一个基于 Guava 的 CacheManager
CacheBuilder<Object, Object> cacheBuilder = CacheBuilder.newBuilder().maximumSize(10000).expireAfterWrite(10, TimeUnit.MINUTES);
GuavaCacheManager cacheManager = new GuavaCacheManager();
cacheManager.setCacheBuilder(cacheBuilder);
return cacheManager;
}
}
```
上述代码中,我们创建了一个基于 Guava 的 CacheManager,并将其设置为 Spring 的缓存管理器。
然后,在需要向缓存中写入数据的方法中,可以通过 CacheManager 的 getCache 方法获取对应的 Cache 对象,然后调用 Cache 对象的 put 方法将数据放入缓存中,如下所示:
```java
@Autowired
private CacheManager cacheManager;
public void writeToCache(String key, Object value) {
Cache cache = cacheManager.getCache("myCache");
cache.put(key, value);
}
```
上述代码中,我们通过 CacheManager 的 getCache 方法获取名为 "myCache" 的 Cache 对象,然后调用 Cache 对象的 put 方法将数据放入缓存中。
同样地,从缓存中读取数据也可以通过 CacheManager 的 getCache 方法获取对应的 Cache 对象,然后调用 Cache 对象的 get 方法获取缓存中的数据,如下所示:
```java
@Autowired
private CacheManager cacheManager;
public Object readFromCache(String key) {
Cache cache = cacheManager.getCache("myCache");
Cache.ValueWrapper valueWrapper = cache.get(key);
return valueWrapper != null ? valueWrapper.get() : null;
}
```
上述代码中,我们通过 CacheManager 的 getCache 方法获取名为 "myCache" 的 Cache 对象,然后调用 Cache 对象的 get 方法获取缓存中的数据。如果缓存中不存在对应的数据,则返回 null。
阅读全文