Guice Java提供的方法没有已知的依赖关系?
似乎缺少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
的构造函数是如何创建的
谢谢
# 1 楼答案
看看the binding resolution docs。当Guice生成一个)是一个默认构造函数。在您的案例中可能会发生这样的情况:
Provider
,并且Provider
有一个类型为A
的参数时,Guice尝试为A
找到一个Provider
或绑定。Guice寻找的东西中(在最后的东西中,即如果没有其他方法获得^{UserPreferenceSelector
是否有默认构造函数