Путаница с "Нет подходящего компонента типа ... RedisConnectionFactory" - PullRequest
0 голосов
/ 04 ноября 2018

Начиная с разных конфигов, я написал два LettuceConnectionFactory:

  1. ItemFactoryConfig

  2. ActivityFactoryConfig

код следующий:

@Configuration
@PropertySource(value = "classpath:config/redis.properties", encoding = "UTF-8")
public class ItemFactoryConfig {
    @Value("${item.host}")
    private String host;
    @Value("${item.port}")
    private int port;

    @Bean
    public LettuceConnectionFactory itemFactory(){
        RedisStandaloneConfiguration redisConfiguration = new RedisStandaloneConfiguration();
        redisConfiguration.setHostName(host);
        redisConfiguration.setPort(port);
        return new LettuceConnectionFactory(redisConfiguration);
    }
}



@Configuration
@PropertySource(value = "classpath:config/redis.properties", encoding = "UTF-8")
public class ActivityFactoryConfig {

    @Value("${activity.host}")
    private String host;
    @Value("${activity.port}")
    private int port;

    @Bean
    public LettuceConnectionFactory activityFactory(){
        RedisStandaloneConfiguration redisConfiguration = new RedisStandaloneConfiguration();
        redisConfiguration.setHostName(host);
        redisConfiguration.setPort(port);
        return new LettuceConnectionFactory(redisConfiguration);
    }
}

И я добавил @Qualifier, когда эти фабрики LettuceConnection были подключены автоматически.

@Configuration
public class ItemTemplateConfig {

    @Autowired
    @Qualifier("itemFactory")
    private LettuceConnectionFactory itemFactory;

    @Bean
    public RedisTemplate<String, String> itemTemplate(){...}
}



@Configuration
public class ActivityTemplateConfig {

    @Autowired
    @Qualifier("activityFactory")
    private LettuceConnectionFactory activityFactory;

    @Bean
    public RedisTemplate<String, String> activityTemplate(){...}
}

Однако весенняя загрузка по-прежнему сообщает об исключении NoUniqueBeanDefinitionException.

Caused by: org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type 'org.springframework.data.redis.connection.RedisConnectionFactory' available: expected single matching bean but found 2: activityFactory,itemFactory

Пружинная загрузка Описание:

Параметру 0 метода redisTemplate в org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration требуется один компонент, но найдено 2: - activityFactory: определяется методом 'activityFactory' в ресурсе пути к классу [com / lyf / redisdemo / config / Activity / ActivityFactoryConfig.class] - itemFactory: определяется методом itemFactory в ресурсе пути к классу [com / lyf / redisdemo / config / Item / ItemFactoryConfig.class]

Действие:

Подумайте о том, чтобы пометить один из bean-компонентов как @Primary, обновить получателя для приема нескольких bean-компонентов или использовать @Qualifier для определения bean-компонента, который должен быть использован

пружинный ботинок: 2.1.0.RELEASE

...