Различные менеджеры кэша в разных конфигурациях дают сбой на нескольких бинах getbean - PullRequest
0 голосов
/ 11 февраля 2020

У меня есть два 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?)

Есть ли способ решить эту проблему?

...