gpt4 book ai didi

dependency-injection - 如何注入(inject)注入(inject)器?

转载 作者:行者123 更新时间:2023-12-03 09:20:20 27 4
gpt4 key购买 nike

情况:我需要在一些 FooClass 中进行惰性依赖实例化,所以我通过 Injector类作为构造函数参数。

private final Injector m_injector;

public FooClass(@Named("FooInjector") Injector injector) {
m_injector = injector;
}

但是 guice 不允许绑定(bind)核心类(注入(inject)器、模块等)。解决办法是什么?

最佳答案

正如其他人已经回答的那样,您可以简单地使用 @Inject Injector因为 Guice 定义了绑定(bind)本身。

通常你只需要一个Injector在您的应用程序中,静态变量是一种比注入(inject)它更容易存储和访问单例的方法。在我们的网络应用程序中,我们使用 stripes-guicer并获取 Injector来自其静态方法GuiceInjectorFactory.getInjector()当我们需要它时(例如在我们的 Hibernate 拦截器中)。

我对“您不应该直接使用 Injector”的建议感到有些困惑。除了调用 injector.getInstance() 之外,我还能如何注入(inject)实例?或 injector.injectMembers() ?没有办法。是的,您可以定义 Provider 方法,但它们永远不会被调用,除非某处使用 Injector。是的,有些模块使用 Injector为您喜欢 ServletModule ;您必须创建 Injector你自己,但你可以把它留给ServletModule之后。

因此,在某些情况下,您可以避免使用 Injector直接,但这并不意味着你“不应该”使用它。如果您在没有任何可选模块的情况下单独使用 Guice,那么您“应该”使用 Injector到处都是,因为没有其他方法可以触发注入(inject)。 (我认为整天在框架内编写代码的开发人员有时会忘记有些人实际上实例化了他们自己的对象。)

关于dependency-injection - 如何注入(inject)注入(inject)器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2176216/

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