我的模块中有这个:
@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;
}
这符合您对懒惰的要求,因为(从页面(:
每当注入器需要该类型的实例时,它都会调用该方法。