Spring 迁移到 spring 后出现集成错误 5

Spring integration errors after migration to spring 5

我使用 Spring 与 Spring 4 的集成(不同类型的频道)已有一段时间了。在我尝试将我的环境升级到 Spring 5 后,他们停止工作并出现如下错误:

org.springframework.messaging.MessageHandlingException:处理'MethodInvokingMessageProcessor'中的消息时出错[org.springframework.integration.handler.MethodInvokingMessageProcessor@c192373];嵌套异常是 java.lang.IllegalArgumentException:BeanFactory 不能为 null,failedMessage=GenericMessage

示例频道creation/registration如下:

deltaupdatedchannel = new DirectChannel(); deltaupdatedchannel.setBeanName("deltaupdatedcontroller");

    serviceActivator = new ServiceActivatingHandler(deltaSummaryController, "updateDelta2");
    handlerlist.add(serviceActivator);
    
    
    
    beanFactory.registerSingleton("deltaupdatedcontroller", deltaupdatedchannel);
    beanFactory.initializeBean(deltaupdatedchannel, "deltaupdatedcontroller");
    deltaupdatedchannel.subscribe(serviceActivator);

通道用于进行以下调用: this.deltaupdatedcontrollerchannel.send(MessageBuilder.withPayload(summarydto).build());

频道调用以下代码:

public void updateDelta2(DeltaSummaryDTO dto) {

    this.messagingTemplate.convertAndSend(
            "/topic/updatedelta", dto);
}

这里的messagingTemplate是org.springframework.messaging.core.MessageSendingOperations.

我怎样才能让它们重新工作?

请与我们分享这样做的原因 registerSingleton()。为什么仅简单的 bean 注册对您来说还不够?

要解决该问题,您还需要在 registerSingleton() 之后调用 initializeBean(Object existingBean, String beanName)

但是,不能保证错误就此结束。我建议修改设计以支持普通的 bean 定义,而不是手动定义的...