Почему RedisCacheConfiguration не может правильно работать с бинами RedisTemplate с автоматическим подключением? - PullRequest
0 голосов
/ 06 февраля 2020

У меня есть проект springbok, который зависит от модуля общего обслуживания (jar), в этом модуле общего обслуживания у нас есть следующий класс конфигурации:

@Configuration  
@ConditionalOnClass(RedisTemplate)  
class RedisConfig {

  @Primary  
  @Bean  
  RedisTemplate<String, Object> redisTemplate() {
     ...
  }

  @Bean  
  StringRedisTemplate stringRedisTemplate() {
     ...
  }
}

, в котором мы хотим использовать кэш пружин этот проект, поэтому у нас есть

spring.cache.type = redis

, но при запуске проекта мы получаем следующую ошибку:

Parameter 0 of method cacheManager in org.springframework.boot.autoconfigure.cache.RedisCacheConfiguration required a bean of type 'org.springframework.data.redis.core.RedisTemplate' that could not be found.
  - Bean method 'redisTemplate' in 'RedisAutoConfiguration.RedisConfiguration' not loaded because @ConditionalOnMissingBean (names: redisTemplate; SearchStrategy: all) found bean 'redisTemplate'
  - Bean method 'stringRedisTemplate' in 'RedisAutoConfiguration.RedisConfiguration' not loaded because @ConditionalOnMissingBean (types: org.springframework.data.redis.core.StringRedisTemplate; SearchStrategy: all) found bean 'stringRedisTemplate'

эта информация об ошибке это действительно сбивает с толку, он говорит, что RedisAutoConfiguration.RedisConfiguration обнаружил bean-компоненты 'redisTemplate' и 'stringRedisTemplate' ,, поэтому он не будет создавать новые bean-компоненты из этих двух ,, но так как он обнаружил эти два bean-компонента ,, почему в начале он говорит, что RedisCacheConfiguration не может найти бин типа 'RedisTemplate' saying это высказывание противоречиво?

Прежде всего, я определил бины 'redisTemplate' и 'stringRedisTemplate' в модуле общего обслуживания, почему эти два бина не могут быть найдены RedisAutoConfiguration.RedisConfiguration

...