[英]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.