有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    看看the binding resolution docs。当Guice生成一个Provider,并且Provider有一个类型为A的参数时,Guice尝试为A找到一个Provider或绑定。Guice寻找的东西中(在最后的东西中,即如果没有其他方法获得^{)是一个默认构造函数。在您的案例中可能会发生这样的情况:UserPreferenceSelector是否有默认构造函数