有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用Guice将java延迟绑定到实例

我的模块中有以下内容:

@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文档中错过了它。。。 多谢各位


共 (2) 个答案

  1. # 1 楼答案

    您只需编写一个provider method

    @Provides
    Authenticator provideAuthenticator() {
      KerberosAuthenticator auth = new KerberosAuthenticator();
      auth.start();
      return auth;
    }
    

    这符合您懒散的要求,因为(从页面):

    Whenever the injector needs an instance of that type, it will invoke the method.