gpt4 book ai didi

java - Guice:可以注入(inject)模块吗?

转载 作者:IT老高 更新时间:2023-10-28 20:21:43 24 4
gpt4 key购买 nike

我有一个模块需要一些 Depedency .有没有办法可以注入(inject)模块本身?我意识到这有点鸡和蛋的情况......

例子:

public class MyModule implements Module {

private final Dependency d_;

@Inject public MyModule(Dependency d) {
d_ = d;
}

public void configure(Binder b) { }

@Provides Something provideSomething() {
// this requires d_
}
}

我想在这种情况下,解决方案是把 @Provides方法成一个成熟的Provider<Something>类(class)。这显然是一个简化的例子;我正在处理的代码有很多这样的@Provides方法将它们分别切割成单独的Provider<...>类并引入一个模块来配置它们会增加相当多的困惑 - 我认为 Guice 就是为了减少样板困惑?

也许这反射(reflect)了我对 Guice 的相对厌恶,但我遇到过不少案例,我很想这样做。我一定是错过了什么……

最佳答案

@Provides 方法可以将依赖项作为参数,就像 @Inject 带注释的构造函数或方法的参数一样:

@Provides Something provideSomething(Dependency d) {
return new Something(d); // or whatever
}

这已记录在 here ,虽然也许可以让它更加突出。

关于java - Guice:可以注入(inject)模块吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5504555/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com