gpt4 book ai didi

java - 我们可以直接用 guice@inject 注入(inject)一个类(没有实现接口(interface))吗

转载 作者:行者123 更新时间:2023-12-02 11:50:07 25 4
gpt4 key购买 nike

在 Google Guice 中:我们可以用注释@Singleton实现一个不实现接口(interface)的单例类吗并尝试使用注释 @Inject 将其注入(inject)到任何其他类中?另外,我还没有在 AbstractModule 的扩展类中为该类配置任何绑定(bind)。是否有必要从接口(interface)实现该类,并且我还想知道绑定(bind),如果我从接口(interface)实现单例类,则需要绑定(bind),因为可能有多个类实现该接口(interface)。

但是如果我有一个没有实现接口(interface)的类,那么是否需要在实现 AbstractModule 的类中绑定(bind)??

最佳答案

是的,您可以使用@Singleton之类的范围注释来标记实现类并直接注入(inject)它。

不需要在 AbstractModule 中绑定(bind)该类,但您可能希望使用 Untargeted Binding 来绑定(bind)该类。 ,出于多种原因:

  • Guice 将在注入(inject)器启动时立即加载该类并准备其依赖项,这可能会在运行时产生更可预测的性能。这对于服务器特别有用,因为 Guice 应用程序可能会在接收实时流量之前“预热”。

  • Guice 将知道缺少的依赖项,并且如果缺少任何依赖项,则在注入(inject)器创建时会失败。如果没有 bind 语句,Guice 可能只会在尝试实现它时遇到您的类,这意味着您的应用程序可能会运行一段时间,然后 Guice 才能抛出有关缺少依赖项的异常。

  • 您可以选择限制可以注入(inject)的类,以降低项目开发人员无意中向图表添加不适当的绑定(bind)的可能性。您可以通过调用requireExplicitBindings来启用该检查。 ,此时您将需要一个 bind 语句。

关于java - 我们可以直接用 guice@inject 注入(inject)一个类(没有实现接口(interface))吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47942919/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com