gpt4 book ai didi

java - 来自嵌套注入(inject)的 Bean 类型转换错误

转载 作者:行者123 更新时间:2023-11-30 08:48:23 25 4
gpt4 key购买 nike

我现在在我的项目中使用 Spring Integration,特别是 MessageChannel/PublishSubscribeChannel。我想要实现的是创建一个代理模块,以便系统的其他部分可以调用该模块向特定的 MessageChannel 发送消息。

这是我现在在代理模块中所做的:

@Configuration
public class BrokerConfiguration {
@Bean
public MessageChannel brokerChannel1() {
return new PublishSubscribeChannel();
}
}

和:

@Component
public class BrokerA {
@Autowired
@Qualifier("brokerChannel1")
public MessageChannel messageChannel;

public void sendAMessage() {
messageChannel.send(MessageBuilder.withPayload("This is a message!").build());
}
}

我通过在代理模块中创建一个 SpringBootApplication 来解决这个设置,它似乎工作得很好。但是,当我尝试像这样在系统的不同模块中使用它时:

@Autowired
private BrokerA brokerA;

public void doSomethingHere() {
brokerA.sendAMessage();
}

我得到这样的 ClassCastException:

java.lang.ClassCastException: org.springframework.integration.channel.PublishSubscribeChannel cannot be cast to org.springframework.messaging.MessageChannel

当我将 BrokerA 中的 messageChannel 更改为 PublishSubscribeChannel 类型时,它会提示 PublishSubscribeChannel 没有名为 send() 的方法。

这让我很困惑。有什么建议或意见吗?谢谢!

最佳答案

类路径上有旧版本的 Spring Integration; MessageChannel 等在 Spring 4.0 中从 o.s.integration... 移动到 o.s.messaging

您需要使用 Spring Integration 4.x。

关于java - 来自嵌套注入(inject)的 Bean 类型转换错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31993051/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com