首页 > 解决方案 > Spring将缓存添加到现有的CacheManager bean

问题描述

我有一个依赖于库的应用程序。应用程序可能有也可能没有 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?

标签: javaspringdependency-injectionspring-beanspring-cache

解决方案


你不必丰富现有的,你可以让两个豆子并存。为此,您可以使用 spring 缓存并确定您的缓存管理器。例如:

@Bean
@Qualifier("libCacheManager")
public JCacheCacheManager libCacheManager() {
    // Details Omitted.
}

然后在您的可缓存方法上使用:

@Cacheable(cacheManager = "libCacheManager", cacheNames = "name")

推荐阅读