【问题标题】:How to inject a implementation that takes some value in its constructor in Guice?如何在 Guice 的构造函数中注入一个取值的实现?
【发布时间】:2017-08-18 01:29:28
【问题描述】:

我尝试在 Guice 中注入以下实现

`public class Client{ 
   private final Database db; 
   public Client(Database db){ 
     this.db = db 
   } 
}

class SomeClass{ 
  private Client client; 

  @Inject 
  public SomeClass(Client client){ 
    this.client = client; 
  } 
}`

这是我的注入代码 注射器 guice = Guice.Injector(); guice.getInstance(SomeClass.class);

但我不断收到错误:

找不到合适的构造函数 你好.package.helloworld.Client。类必须有一个(和 只有一个)用@Inject 或零参数注释的构造函数 非私有构造函数

我如何注入一个已经接受了一些参数的类?

【问题讨论】:

标签: java dependency-injection guice


【解决方案1】:

错误文本非常明确:你没有在Client的构造函数上使用@Inject

所以我们的想法是:

public class Client{ 
  private final Database db; 
  @Inject
  public Client(Database db){ 
    this.db = db 
  } 
}

如果您不知道自己的数据库,但想创建它,请考虑使用 Guice 的 assisted injection,它会为您创建工厂。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多