所以Spring决定放弃番石榴,而是引入咖啡因缓存支持。我感觉支持非常有限。
使用缓存的最简单方法是使用@Cacheable注释。一个非常常见的用例是确保有多个具有不同设置(例如长/短生存(的缓存。
我不知道该怎么做。事实上,我认为当前的实现是不可能的,这真的让我感到惊讶。
Spring 使用CaffeineCacheManager
来动态创建缓存。它有几种方法来设置Caffeine
,CacheLoader
或CaffeineSpec
,您可以在其中设置缓存属性。但是,这随后用于所有创建的缓存,我没有看到仅为一个缓存设置属性的方法。
我在这里错过了什么吗?
我现在这样解决了它。我创建了一个问题,使这里更容易
public class CustomCaffeineCacheManager extends CaffeineCacheManager {
private Map<String, Cache> preDefinedCaches = new ConcurrentHashMap<>();
public void addCache(String name, Cache cache) {
preDefinedCaches.put(name, cache);
}
@Override
protected Cache<Object, Object> createNativeCaffeineCache(String name) {
return preDefinedCaches.getOrDefault(name, super.createNativeCaffeineCache(name));
}
}
在@Configuration课上:
@Bean
public CacheManager cacheManager() {
CustomCaffeineCacheManager caffeineCacheManager = new CustomCaffeineCacheManager();
caffeineCacheManager.addCache("customCache", Caffeine.newBuilder()
.expireAfterWrite(2, TimeUnit.MINUTES)
.maximumSize(5_000).build());
return caffeineCacheManager;
}