簡體   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