[英]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)
檢查這個
您可以簡單地編寫一個提供程序方法:
@Provides
Authenticator provideAuthenticator() {
KerberosAuthenticator auth = new KerberosAuthenticator();
auth.start();
return auth;
}
這符合您的懶惰要求,因為(來自頁面):
每當注入器需要該類型的實例時,它就會調用該方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.