War*_*ith 5 java android dependency-injection toothpick-di
我正在尝试牙签DI库,但似乎错过了一些重要的事情。
我在github上创建了以下测试项目,在该项目中,我尝试为我的理解问题制作一个最小的用例。
在这里,您将找到ApplicationModule,在这里我尝试将所需的一切注入“根”模块中。如您所见,我有两次scope.installModules(module)是因为我PlainPojo依赖Application实例。如果我不执行第一个installModule调用,则该作用域中没有应用程序实例。如注释中所述,我可以将应用程序实例作为参数传递,但是我认为我可以在使用DI时将其删除吗?
引起麻烦的第二个类是SimpleTest类。如果我没有inject()在构造函数中调用该方法,则不会注入PlainPojo成员。我也试图用第三次installModules()在ApplicationModule绑定PlainPojo之后,但这样做没有帮助。
我是否错误地认为@Injecton成员足以在范围内可用时自动注入它,并且绑定的顺序足以使以前的绑定可用而无需在两者之间进行安装(如in中完成ApplicationModule)?
如果我能提供更多其他信息使我的问题易于理解,请发表评论。
提前致谢!
Toothpick 只能在创建依赖对象本身的实例时自动注入依赖项(例如,它用 @Singleton 注释或有该类的直接绑定)。
否则,您必须手动调用 Toothpick.inject,就像在 SimpleTest 中一样。TP 无法知道你何时调用 PlainPojo 的构造函数。
你可以只使用
module.bind(PlainPojo.class);
module.bind(SimpleTest.class);
Run Code Online (Sandbox Code Playgroud)
如果需要的话,也许可以将它们限制为单例。
| 归档时间: |
|
| 查看次数: |
399 次 |
| 最近记录: |