似乎缺少 provides
的文档,所以我问这个问题。
考虑这个 Guice 模块
public class MyModule extends AbstractModule {
String TEMPLATE_PATH = '/path/to/templates';
@Provides
RateLimiter generateRateLimiter(UserPreferenceSelector prefSel) {
return new EmailTemplate(new FileLocator(TEMPLATE_PATH), prefSel);
}
/* ...configure... */
}
对于方法generateRateLimiter
,UserPreferenceSelector prefSel
从哪里获取?我没有看到任何地方提供它。它是如何创建的,UserPreferenceSelector
的构造函数又如何?
谢谢!
最佳答案
查看the binding resolution docs 。当 Guice 创建一个 Provider
时,并且该 Provider
有一个 A
类型的参数,Guice 会尝试查找一个 Provider
或绑定(bind)A
。 Guice 寻找的东西中(在最后东西中,即如果没有其他方法来获取A
)是一个默认构造函数。您的情况可能会发生这种情况:UserPreferenceSelector
是否有默认构造函数?
关于java - Guice Java 提供了没有已知依赖性的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59311770/