本示例摘自一本关于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
注射的,因为我将在我的工厂也注入吧...
我希望我的问题是不够清楚......