我想以编程方式注册一个spring bean(org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer)
SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();
container.setConnectionFactory(connectionFactory);
container.setQueueNames(queueName);
container.setMessageListener(listenerAdapter);
beanFactory.registerSingleton(name, container);
contains类实现了InitializingBean,其中beanFactory通过
注入@Autowired
private void setBeanFactory(ConfigurableListableBeanFactory beanFactory) {
this.beanFactory = beanFactory;
}
问题是,生成的bean无法正常工作。调试显示,例如,没有在实现ApplicationEventPublisherAware的SimpleMessageListenerContainer上设置ApplicationEventPublisher。
反过来,当我通过@Bean注释注册bean时,它可以正常工作:
@Bean
public SimpleMessageListenerContainer zuteilungsProviderContainer(
@SuppressWarnings("SpringJavaAutowiringInspection") ConnectionFactory connectionFactory,
MessageListenerAdapter tourZuteilungenListenerAdapter) {
SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();
container.setConnectionFactory(connectionFactory);
container.setQueueNames(Q_BRIEFING_WINDOW);
container.setMessageListener(tourZuteilungenListenerAdapter);
return container;
}
以编程方式创建bean时,由于某种原因,布线或后处理无法正常工作。我调试了很多,但我迷失了春天的细节。
我想念什么?我会非常感谢任何提示。
答案 0 :(得分:1)
this._value = val ? [...val] : null;
在行
之前添加此内容beanFactory.autowireBean(container);
beanFactory.initializeBean(container, name);