延迟绑定到使用 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 文档中错过了它......谢谢。

使用提供程序,

绑定(身份验证器.class( .toProvider(AuthenticatorProvider.class(

检查这个

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

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

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

这符合您对懒惰的要求,因为(从页面(:

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

最新更新