0

我在不同的地方(由不同的团队)定义了两个 CacheManager:

例如:

@Configuration
@EnableCaching
public ConfigClassOne {

        @Bean
        public CacheManager myCacheManager() {
            return new ConcurrentMapCacheManager("someCacheName");
        }
}

和代码中的其他地方(我的应用程序使用但不负责):

@Configuration
@EnableCaching
public class CacheConfiguration {

        @Bean
        public CacheManager otherCacheManager () {
            return new ConcurrentMapCacheManager(CacheConstants.SOME_CACHE_NAME,
                                                 CacheConstants.SOME_OTHER_NAME);
        }
}

尝试执行 getBean 时出现不满意的 bean 异常,因为有两个CacheManager.class 结果。

问题是,因为这对我来说是外部的,我不想依赖他们制作缓存,也不想将我的缓存设置为主要的,因为他们可能会收到它。

我尝试设置 bean 名称、bean 限定符,但都导致没有结果或 2 个结果(两个例外)。

我尝试创建一个 CompositeManager (primary) 来接受我们的,但这不是一个理想的解决方案..

更奇怪的是,在运行集成测试时,我看到以下内容:

在调试中,我可以看到即使没有主节点,每一侧(我的和他们的)的两个自动装配的 bean(使用它们的类)都能正确地获得各自的管理器,但是测试失败,因为在某些时候它会在自动装配到另一个类时运行一些刷新持有 bean 实例的类,然后它尝试执行 getbean 并失败(可能是 mockito 的东西?)

有没有办法解决这个问题?

4

0 回答 0