我真的不能找到一個巧妙的方法在Spring這樣做 - 可以想象我有一個類來監聽消息:如何連接多個監聽風格豆春季
@Component
public class MessageReceiver {
private List<MessageHandler> handlers = new ArrayList<>();
public void receiveMessage(Message m) {
for(MessageHandler handler: handlers) {
handler.process(m);
}
}
public void registerMessageHandler(MessageHandler handler) {
handlers.add(handler);
}
}
基本上,我想能夠定義多個MessageHandler
豆,並自己註冊MessageReceiver
。我寧願不必在某處保留一個MessageHandler
列表 - 我只是簡單地喜歡Spring在上下文中找到任何內容(可能註釋了@Bean
或@Component
),並讓他們將registerMessageHandler()
方法作爲佈線過程的一部分。
最簡單的方法是什麼?
我想它可以工作,但它有點破解和濫用事件機制的東西它不是要做的。我想我寧願在'@ Configuration' bean中維護一個處理程序列表,如果有一些額外的工作,這至少是正確的。 – BarrySW19
如果你的處理程序事先知道,它聽起來像,它們應該是singleton bean,這意味着你可以從Spring上下文獲得它們。通過使用'ApplicationContextAware'' MessageReceiver',然後使用'getBeansOfType'或'@ Autowiring'' List'查看'MessageReceiver'。如果處理程序是短暫的,那麼您可能需要在代碼中註冊/取消註冊它們。 –
啊,我沒有看到autowired集合 - 這似乎是我想要的。 – BarrySW19