java - Guice Java 提供了没有已知依赖性的方法?

标签 java guice

似乎缺少 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... */
}

对于方法generateRateLimiterUserPreferenceSelector 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/

相关文章:

android - 使用 Roboguice 将 Android Activity 注入(inject) POJO

java - 尝试使用软编码(基于输入的数组大小)制作掷骰子java应用程序,得到ArrayIndexOutOfBoundsException

Java Webapp 性能问题

java - 如何解码ASN1字节以提取信息?

java - 如何使用 guice 注入(inject)器动态绑定(bind)映射

java - 运行 JUnit 测试时出错(JPA、Derby、Hibernate、Guice)

java - Java Socket read() 在返回 -1 并完成时如何花费很长时间?

java - 如何在加载时隐藏 RichFaces 组件?

java - Java中TypeLiteral的使用

java - 创建现有对象的@UnitOfWork 感知代理