【发布时间】:2017-09-11 09:21:48
【问题描述】:
在下面来自 Spring 入门指南的示例中,容器 bean 如何获取 connectionFactory? Spring Boot 自己提供 connectionFactory 吗?
Getting Started Messaging with Spring Redis
有 5 个豆子:
- 闩锁
- 接收者
- 监听适配器
- 模板
- 容器
先创建闩锁。然后是receiver,因为receiver构造函数需要latch。然后是listenerAdapter,因为它需要receiver。模板和容器都需要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);
}
}
【问题讨论】: