В следующем примере из Руководства по началу работы Spring, как контейнерный компонент получает connectionFactory? Предоставляет ли Spring Boot объект connectionFactory самостоятельно?
Начало работы с сообщениями в Spring Redis
Всего 5 бобов:
- защелка
- получатель
- listenerAdapter
- шаблон
- контейнер
защелка создается первой. Затем получатель, потому что конструктору получателя нужна защелка. Затем listenerAdapter, потому что ему нужен получатель. И шаблону, и контейнеру требуется connectionFactory. В коде я не нахожу метода с именем connectionFactory и аннотированного @Bean.
@SpringBootApplication
public class Application {
@Bean
RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory,
MessageListenerAdapter listenerAdapter) {
RedisMessageListenerContainer container = new RedisMessageListenerContainer();
container.setConnectionFactory(connectionFactory);
container.addMessageListener(listenerAdapter, new PatternTopic("chat"));
return container;
}
@Bean
MessageListenerAdapter listenerAdapter(Receiver receiver) {
return new MessageListenerAdapter(receiver, "receiveMessage");
}
@Bean
Receiver receiver(CountDownLatch latch) {
return new Receiver(latch);
}
@Bean
CountDownLatch latch() {
return new CountDownLatch(1);
}
@Bean
StringRedisTemplate template(RedisConnectionFactory connectionFactory) {
return new StringRedisTemplate(connectionFactory);
}
}