繁体   English   中英

使用 Guice 延迟绑定到实例

[英]Deferred binding to instance using Guice

我的模块中有这个:

@Override
protected void configure() {
    bind(Authenticator.class).toInstance(KerberosAuthenticator.create());
}

这里绑定到实例的原因是因为 Kerberos 身份验证需要一些初始化,如下所示:

    public static KerberosAuthenticator create() {
    KerberosAuthenticator auth = new KerberosAuthenticator();
    auth.start();
    return auth;
}

这有效。 我特别喜欢它在没有工厂和提供者等噪音的情况下工作的事实......我可以以某种方式推迟创建这个实例。 显然在我配置绑定时调用了 create() 方法。 在这种情况下,创建并不昂贵,但在其他情况下,它可能是,或者,甚至可能不需要......我不知何故,在 Guice 文档中缺少它......谢谢。

使用提供者,

绑定(Authenticator.class) .toProvider(AuthenticatorProvider.class)

检查这个

https://github.com/google/guice/wiki/ProviderBindings

您可以简单地编写一个提供程序方法

@Provides
Authenticator provideAuthenticator() {
  KerberosAuthenticator auth = new KerberosAuthenticator();
  auth.start();
  return auth;
}

这符合您的懒惰要求,因为(来自页面):

每当注入器需要该类型的实例时,它就会调用该方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM