当前位置: 首页 > 知识库问答 >
问题:

如何在Guice中注入一个在其构造函数中取某个值的实现?

唐威
2023-03-14

我有以下实现,我正在尝试在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; 
  } 
}`

这是我的注入代码Injector guice=Guice. Injector();guice.get实例(SomeClass.class);

但我不断地得到错误:

在hello.package.helloworld.客户端中找不到合适的构造函数。类必须有一个(并且只有一个)用@Inject注释的构造函数或一个非私有的零参数构造函数

如何注入一个已经有参数的类?

共有1个答案

缑修齐
2023-03-14

错误文本非常明确:您没有在客户端的构造函数上使用@Inject

所以这个想法是这样的:

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

如果您不知道您的数据库,但想创建它,请考虑使用 Guice 的辅助注射,它为您创建工厂。

 类似资料:
  • 问题内容: 假设我有一些类似以下的课程。(为简单起见,这是一个虚构类。) 由于我使用不同的实现,并且可能想对该发送功能进行单元测试,因此我认为我应该注入in 的方法。但是我该怎么做呢? 我见过的所有我理解的Guice示例似乎都是在构造函数中进行注入的: 但是我的类在其构造函数中接受了一个参数,我不想注入该参数。那我该怎么办呢? (注意:我是一个完整的Google Guice noob。我认为我了解

  • 我是Guice的新手,正在尝试在下面的类族中实现依赖注入,如下所示: 然而,有一些问题,由于我的请求没有成功。 您能否帮助我发现问题,并让我知道您是如何调试Guice中的依赖注入问题的?

  • 有人能帮助实现没有注释的Guice吗? pom。xml 我所尝试的: 我得到的错误是: 我理解这个错误。 但是我希望我可以“指向”Guice到正确的构造函数......而不是使用注释。 如您所见,使用默认/空构造函数不是一个好选择,因为这个示例很简单,但我想坚持使用基于构造函数的注入。 附加: 根据我在评论中从赫曼特·辛格那里得到的“暗示”,我想我离得更近了。 我创建了一个ProductionIn

  • 我目前在我的大学学习初级java课程,仍然在学习编程的基础知识。这周我们一直在学习构造函数,我被困在本周任务的后半部分,所以任何帮助都将不胜感激。 实验室的第二部分(我一直坚持的部分)的说明如下: 为类Truck编写完整的代码,如下面的类图所示。一定不要在构造函数中使用重复的代码。例如,具有2个参数的构造函数应该调用具有1个参数的构造函数来设置柱体的值。 这些是它想让我做的构造函数。 任何关于如何

  • 我有一个类< code >配置: 配置java 我如何将它注入到某个构造函数中,例如: 我希望这个字符串 从配置中注入了值。这可能吗?

  • 问题内容: 是否可以从另一个(在同一类中,而不是在子类中)调用构造函数?如果是,怎么办?调用另一个构造函数的最佳方法是什么(如果有几种方法可以做到)? 问题答案: 对的,这是可能的: 要链接到特定的超类构造函数而不是同一类中的构造函数,请使用代替。注意,你只能链接到一个构造函数,它必须是构造函数主体中的第一条语句。