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



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

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

我可以在不扩展 AbstractModule 的类中拥有这样的东西吗,或者它应该总是在 guicemodule 类中?

是的,你可以,但你的类必须实现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;
}
}

最新更新