【发布时间】:2016-11-09 17:40:27
【问题描述】:
假设有一个类 A,它的构造函数看起来像这样:
public A(@Assited long id, @Assisten String name, ServiceA serviceA, ServiceB serviceB)
还有 AFactory:
public interface AFactory{
A create(long id, String name);
}
所以要创建 A 的实例,我显然需要这样做:
injector = Guice.createInjector(new MyModule());
AFactory af = injector.getInstance(AFactory .class);
A a = AFactory.create(100, "mike");
但是, 假设我有其他类:B 类、C 类和 D 类,它们有一个类型为 A 的成员,例如(具有字段注入但也可以是 ctor):
public class B{
@Inject
A a;
}
我希望将 A 的 相同实例 注入到这些类中。 但仍然可以选择将 A 的另一个实例注入其他类(比如说 E 类和 F 类)。
这样做的正确方法是什么? 我只是想不出一个干净的方法来做到这一点。
【问题讨论】:
标签: java dependency-injection guice guice-3 assisted-inject