我在不同的地方(由不同的团队)定义了两个 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 的东西?)
有没有办法解决这个问题?