我現在正在使用Spring Integration與我的項目,特別是MessageChannel/PublishSubscribeChannel。我想要實現的是創建代理模塊,以便系統的其他部分可以調用此模塊將消息發送到特定的MessageChannel。嵌套注入造成的Bean鑄造錯誤
這裏就是我的經紀人模塊現在做的:
@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()的方法。
這真讓我感到困惑。任何建議或意見?謝謝!
這完全正確!謝謝! –
我有另一個取決於sprint-integration-core 3.x的maven依賴項,並且沒有更新。你有什麼建議來處理這種情況? –
對於任何事情你都必須回去(重寫引導的依賴關係)到Spring Integration 3.0.x,但啓動啓動器/自動配置的東西不太可能用於任何SI組件。取決於你在做什麼,你可能不得不退回到Spring Framework 3.x,這可能完全排除引導。您可以考慮在不同的類加載器中加載該jar,並提供一個shim將消息從一個類轉換爲另一個類(並再次返回)。 –