我可以在不扩展AbstractModule的类中使用Guice @Provides方法吗?

时间:2020-04-30 03:17:47

标签: guice

我的问题很简单,我可以在不扩展AbstractModule的类中创建@Provides方法吗?

 @Provides
    public int someMethod() {
        return someValue;
    }

在不扩展AbstractModule的类中是否可以有这样的东西,还是应该始终在guicemodule类中?

1 个答案:

答案 0 :(得分:1)

是的,可以,但是您的类必须实现Module

从技术上讲,一切都是Module,因此Guice必须如此识别。 Guice希望在其上运行configure(Binder)

这是您的操作方式:

public class MyModule implements Module { // See? No AbstractModule
  @Provides
  public int someMethod() {
    return someValue;
  }
  @Override public void configure(Binder binder) {}
}

如果您只是想要一个没有任何实现要求的伪类来存储您的所有模块,那么您目前很不走运,因为这是不可能的。

但是,从Guice 4.1开始,您可以编写以下代码而无需实现configure(Binder),这还不错:

public class MyModule extends AbstractModule {
  @Provides
  public int someMethod() {
    return someValue;
  }
}