Начиная с разных конфигов, я написал два LettuceConnectionFactory:
ItemFactoryConfig
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