@Cacheable创建的缓存的单独设置



所以Spring决定放弃番石榴,而是引入咖啡因缓存支持。我感觉支持非常有限。

使用缓存的最简单方法是使用@Cacheable注释。一个非常常见的用例是确保有多个具有不同设置(例如长/短生存(的缓存。

我不知道该怎么做。事实上,我认为当前的实现是不可能的,这真的让我感到惊讶。

Spring 使用CaffeineCacheManager来动态创建缓存。它有几种方法来设置CaffeineCacheLoaderCaffeineSpec,您可以在其中设置缓存属性。但是,这随后用于所有创建的缓存,我没有看到仅为一个缓存设置属性的方法。

我在这里错过了什么吗?

我现在这样解决了它。我创建了一个问题,使这里更容易

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;
}

最新更新