我有两个课程:Foo
和Bar
。 Foo
取决于Bar
。
Bar
有两个单例实例:
@Singleton
@Provides
@Named("first")
static Bar provideFirstBar() {
return new Bar();
}
@Singleton
@Provides
@Named("second")
static Bar provideSecondBar() {
return new Bar();
}
以及Foo
的两个单例实例(每个都取决于相关的Bar
)。
@Singleton
@Provides
@Named("first")
static Foo provideFirstFoo(@Named("first") Bar bar) {
return new Foo(bar);
}
@Singleton
@Provides
@Named("second")
static Foo provideSecondFoo(@Named("second") Bar bar) {
return new Foo(bar);
}
现在,问题是:我想简化这个模块并摆脱provide*Foo
方法,而是使用Foo
的构造函数依赖。如果我只需要@Named("first")
实例,我知道该怎么做:
@Singleton
@Named("first")
class Foo {
@Inject
Foo(Bar bar) { }
}
但是是否可以同时使用@Named
实例和构造函数注入所有可能的名称?或者我应该使用@Provider
方法?
答案 0 :(得分:0)
我以前曾问过这个问题,但总是被告知不。您无法使用构造函数注入命名/限定符注释。