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

Java 我们可以直接使用注入类(不实现接口的类)吗guice@inject,java,guice,Java,Guice,在Google Guice中: 我们可以用注释@singleton实现一个不实现接口的singleton类吗 并尝试使用annotation@inject将其注入任何其他类中? 此外,我还没有在AbstractModule的扩展类中为该类配置任何绑定。 是否有必要从接口实现该类?我还想了解绑定。如果我从接口实现singleton类,则需要绑定,因为可能有多个类实现该接口 但是,如果我有一个没有实现接口的类,那么是否需要在实现AbstractModule的类中进行绑定???是的,您可以使用@Sin

在Google Guice中: 我们可以用注释@singleton实现一个不实现接口的singleton类吗 并尝试使用annotation@inject将其注入任何其他类中? 此外,我还没有在AbstractModule的扩展类中为该类配置任何绑定。 是否有必要从接口实现该类?我还想了解绑定。如果我从接口实现singleton类,则需要绑定,因为可能有多个类实现该接口


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

是的,您可以使用@Singleton之类的范围注释标记一个实现类,并直接将其注入

不需要在AbstractModule中绑定该类,但您可能希望使用,原因如下:

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

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

您可以选择限制可以注入的类,以减少项目中的开发人员无意中将不适当的绑定添加到图形中的可能性。您可以通过调用启用该检查,此时您将需要一个bind语句


你是说,不是番石榴?是的!com.google.inject.inject,com.google.inject.Singleton;好吧,你的问题是说Guice。这两件事毫不相关。