我的模块中有这个
@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文档中错过了它。 谢谢。
答案 0 :(得分:1)
使用提供商,
bind(Authenticator.class) .toProvider(AuthenticatorProvider.class)
检查此
答案 1 :(得分:0)
您可以简单地写一个provider method:
@Provides
Authenticator provideAuthenticator() {
KerberosAuthenticator auth = new KerberosAuthenticator();
auth.start();
return auth;
}
这符合您的懒惰要求,因为(来自页面):
只要注入器需要该类型的实例,它将调用该方法。