【发布时间】:2015-03-19 23:08:11
【问题描述】:
是否可以告诉 Guice 不需要注入所有构造函数参数?例如,我有一个构造函数Foo,它接受Bar 和Baz 类型的两个参数。在我的系统中,它们都是可选的:它们可能
- 两者都在场
- 都不见了
- 只有
Bar在场 - 只有
Baz在场。
也就是说,它依赖于提供这些绑定的其他模块。我想得到这样的东西:
class Foo {
private final Bar bar;
private final Baz baz;
@Inject(optional = true)
public Foo(@Nullable Bar bar, @Nullable Baz baz) {
this.bar = bar;
this.baz = baz;
}
}
但我不能真正将optional 与构造函数一起使用。有没有办法做到这一点?
【问题讨论】:
-
默认值是多少?按照惯例,可选依赖项使用 setter 而不是构造函数参数来表示。
-
默认 null 对我来说很好。所以我应该让构造函数为空并使用setter?