我有一个依赖于库的应用程序。该应用程序可能具有也可能没有CacheManager类型的Bean。图书馆的内部厨房也使用缓存。因此,它必须使用应用程序的现有bean,或使用缓存A,B,C创建自己的一个。如果该库使用现有的bean,则必须使用高速缓存A,B,C丰富该bean。我到底该怎么做?
我已经尝试将以下代码添加到库中,用于“不存在时创建”部分
@Bean
@ConditionalOnMissingBean(CacheManager.class)
public CacheManager codPlusCacheManager() {
SimpleCacheManager cacheManager = new SimpleCacheManager();
cacheManager.setCaches(Arrays.asList(
new ConcurrentMapCache("A"),
new ConcurrentMapCache("B"),
new ConcurrentMapCache("C")))
return cacheManager;
}
如何丰富现有的bean?
答案 0 :(得分:0)
您不必丰富现有产品,可以使两个bean并存。 为此,您可以使用spring缓存并确定什么是您的缓存管理器。 例如:
@Bean
@Qualifier("libCacheManager")
public JCacheCacheManager featureFlagsCacheManager() {
// Details Omitted.
}
然后在您的可缓存方法上使用:
@Cacheable(cacheManager = "libCacheManager", cacheNames = "name")
答案 1 :(得分:-1)
根据setCaches()
的{{3}},它需要一组缓存对象。请尝试以下方法来配置您的缓存管理器:
@Bean
@ConditionalOnMissingBean(CacheManager.class)
public CacheManager codPlusCacheManager() {
SimpleCacheManager cacheManager = new SimpleCacheManager();
Collection<Cache> caches = Arrays.asList(
new ConcurrentMapCache("A"),
new ConcurrentMapCache("B")
new ConcurrentMapCache("C")
);
cacheManager.setCaches(caches);
return cacheManager;
}