本示例摘自一本關於Dependency Injection的書。Guice局部注射示例
在頁87,有這個例子。
public class NewsletterManager {
private final List<Recipient> recipients;
private final DelivererFactory factory; // The book notes this as injected
public NewsletterManager(List<Recipient> rs, DelivererFactory factory) {
this.recipients = rs;
this.factory = factory;
}
public void send(Newsletter letter) {
for (Recipient recipient : recipients) {
Deliverer d = factory.forLetter(letter);
d.deliverTo(recipient);
}
}
}
我明白代碼的意思做,但我不明白的是如何實例化,或配置我Module
,這樣我可以創建該類的實例。
看起來DelivererFactory
被注入。這些例子沒有說明如何,但讓我們承認它是通過構造函數注入的。在那種情況下,如何通過List<Recipient>
實例,這對我想要的NewsletterManager
實例特別有用?我怎樣才能使用Guice實例化我的NewsletterManager
模塊配置的DelivererFactory
和特定的List<Recipient>
實例?
我沒有得到的是如何在構造函數的簽名中同時自動注入對象和特定於實例的對象。在這種情況下,我看不到我如何獲得只有我的List<Recipient>
的NewsletterManager
實例。我必須依賴工廠嗎?在這種情況下,有什麼用的DelivererFactory
注射的,因爲我將在我的工廠也注入吧...
我希望我的問題是不夠清楚......