У меня есть два 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, потому что есть два результатов CacheManager.class.
Проблема в том, что это внешнее по отношению к мне, я не хочу полагаться на то, что они создают кеш, и не устанавливаю мой в первичный, поскольку они могут его получить.
Я пытался установить имя бина, квалификатор бина, но все это приводит либо к отсутствию результатов, либо к 2 результаты (оба исключения).
Я пытался создать CompositeManager (основной), который бы заменил их на наш, но это не идеальное решение ..
Даже странно, когда я запускаю интеграционный тест, я вижу следующее:
В отладке я вижу, что оба автопровода (классы, которые их используют) на каждой стороне (моей и их) правильно получают своих соответствующих менеджеров даже без основного, но т Есть сбой, потому что в какой-то момент он запускает некоторый refre sh при автоматическом подключении к другому классу, который содержит экземпляр bean-компонента, а затем он пытается выполнить getbean и завершается неудачно (возможно, что-то с mockito?)
Есть ли способ решить эту проблему?