Java 如何使用Guice';什么是注射器?

Java 如何使用Guice';什么是注射器?,java,guice,guice-3,Java,Guice,Guice 3,我正在学习Guice,不清楚如何使用Injector实例。最好在应用程序引导上一次性创建Injector实例,并将其公开为单例 我们总是必须使用Injector#getInstance(SomeClass.class)来获取我们放置Guice的@Injector注释的类,这是真的吗 不应将喷油器作为全局单体传递。你看过吗?请注意,RealBillingService不使用注入器获取CreditCardProcessor和TransactionLog的实例。相反,Guice在创建实例时会为您处理所

我正在学习Guice,不清楚如何使用
Injector
实例。最好在应用程序引导上一次性创建
Injector
实例,并将其公开为单例


我们总是必须使用
Injector#getInstance(SomeClass.class)
来获取我们放置Guice的
@Injector
注释的类,这是真的吗

不应将喷油器作为全局单体传递。你看过吗?请注意,
RealBillingService
不使用注入器获取
CreditCardProcessor
TransactionLog
的实例。相反,Guice在创建实例时会为您处理所有这些


如果您处于需要Guice创建许多相同类型的对象的情况下,请考虑使用A和注入该提供程序。

最好不要使用<代码>注入器。。@millimoose但是检索Guice管理的类的其他方法是什么呢?用
@Inject
注释的字段应该有“自动”可用的正确类。(假设您让Guice也管理需要注入的类。)想法是让容器管理您的依赖项和使用它们的类,并且只手动从注入器获取一个“主”类来启动应用程序。您还应该考虑,这是依赖注入101。是的,我在提问之前阅读它,但是必须使用<代码>注入器> GETStase:MyClass(class)< /Cl>检索具有“<代码> @注销< /代码>的字段的类。那么,如果我有多个类,其中的字段用
@Inject
注释,该怎么办呢?我需要使用
Injector#getInstance(ClassName.class)
初始化每个类。不一定。仅当您需要从非Guice管理的类中调用一个方法时。或者,您可以改为执行
Injector.injectMembers(this)
,并从
Injector
填充所有带
@injecte
注释的字段,即使是在非托管对象上。是的,我理解。但是,如果我有多个服务,比如
RealBillingService
,并且每个服务都有
@Inject
注释,用于注入
CreditCardProcessor
TransactionLog
对象,那该怎么办呢。所以我需要使用
Injector#getInstance
来处理像
RealBillingService
这样的每个服务。但是我想在不同的地方创建这个服务,所以我有两个变体:在每个地方创建
Injector
对象,并使用
Injector\getInstance
检索必要的服务,或者创建
Injector
实例,使其可访问(全局单例)到我需要它的所有地方。或者有第三个对象,其中包含两个服务的实例(都用
@Inject
注释)。然后使用
Injector
获取第三个对象的单个实例。实际上很少看到
Injector
。例如,如果您正在将
Jersey
Guice
一起使用,那么您可以配置模块,然后框架处理其余部分。泽西队是否支持Guice开箱即用?它就像:Jersey是Guice管理的组件,所以我们不需要显式地使用
Injector
instance?或者您是说Jersey在JEE容器的上下文中?也就是说,CDI(Guice)只能在容器管理器组件中使用,如EJB、JAX-RS(Jersey)、JAX-WS等,而无需显式使用
Injector#getInstance