我可以在一个不扩展AbstractModule的类中做一个Guice @Provides方法吗?

问题描述 投票:0回答:1

我的问题很简单 我可以在一个不扩展AbstractModule的类中使用@Provides方法吗?

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

我可以在一个不扩展AbstractModule的类中使用这样的方法吗,还是应该在guicemodule类中使用?

guice
1个回答
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;
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.