Java 牙签绑定相互依赖的模块

Java 牙签绑定相互依赖的模块,java,android,dependency-injection,toothpick-di,Java,Android,Dependency Injection,Toothpick Di,我正在试用牙签DI库,我似乎错过了一些重要的东西 我创建了以下内容,试图为我的理解问题创建一个尽可能小的用例 在那里,您将找到我尝试在“根”模块中注入所需的所有内容的地方。如您所见,我有两个作用域。installModules(module),因为我的PlainPojo依赖于应用程序实例。如果我没有执行第一个installModule调用,则范围中没有应用程序实例。如注释中所述,我可以将应用程序实例作为参数传递,但我认为在使用DI时可以删除它们 引起麻烦的第二类是阶级。如果我不在构造函数中调用i

我正在试用牙签DI库,我似乎错过了一些重要的东西

我创建了以下内容,试图为我的理解问题创建一个尽可能小的用例

在那里,您将找到我尝试在“根”模块中注入所需的所有内容的地方。如您所见,我有两个
作用域。installModules(module)
,因为我的
PlainPojo
依赖于
应用程序
实例。如果我没有执行第一个
installModule
调用,则范围中没有应用程序实例。如注释中所述,我可以将应用程序实例作为参数传递,但我认为在使用DI时可以删除它们

引起麻烦的第二类是阶级。如果我不在构造函数中调用
inject()
方法,则不会注入PlainPojo成员。在绑定PlainPojo之后,我还尝试在
ApplicationModule
中第三次使用
installModules()
,但这没有帮助

假设成员上的
@Inject
在作用域中可用时足以自动注入,并且绑定的顺序足以使以前的绑定可用,而无需在两者之间安装(如
ApplicationModule
中所做的那样),这是错的吗

如果我能提供更多信息,使我的问题可以理解,请留下评论


提前谢谢

Toothick只能在创建依赖对象本身的实例时自动注入依赖项(例如,它用@Singleton注释,或者类有直接绑定)

否则,您必须手动调用Toothpick.inject,就像在SimpleTest中一样。TP无法知道何时调用PlainPojo的构造函数

你可以用

module.bind(PlainPojo.class);
module.bind(SimpleTest.class);
如果需要的话,也许可以将它们定义为单例