我们可以直接使用guice @ inject注入一个类(不实现接口)

时间:2017-12-22 14:12:14

标签: java guice

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

但是如果我有一个不实现接口的类,那么它是否需要在实现AbstractModule的类中绑定?

1 个答案:

答案 0 :(得分:1)

是的,您可以使用@Singleton等范围注释标记实现类并直接注入。

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

  • 当Injector启动时,Guice会急切地加载类并准备其依赖项,这可能会在运行时产生更可预测的性能。这对于服务器尤其有用,Guice应用程序可以在这些服务器上预热"在接收实时流量之前。

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

  • 您可以选择限制注入哪些类,以减少项目开发人员无意中向图表添加不适当绑定的可能性。您可以致电requireExplicitBindings启用该检查,此时您需要bind声明。