您如何了解哪些对象被注入哪里?我有一个相当小的项目,我使用guice,而不是因为我真的需要它(鉴于项目仍然很小),而是因为我想要更好地了解它.
我已经开始松开概述只有~10个班级; 是否有工具分析代码以显示依赖关系图?
这样可以更容易地快速查看我忘记了什么或者我需要单点范围注入的位置.还有guice,很多东西都是隐含的,能够明确地看到这些东西将有助于将来进行调试.
我有几个原则可以帮助使用Guice管理依赖项.
仅保留模块内的所有绑定.不要使用实时绑定的东西.我的意思是,不要使用或或,即这里描述的所有内容.尝试也始终在模块的顶部调用- 它将强制您始终显式绑定您的依赖项.当您将所有依赖项保留在模块中时,您可以轻松找到由哪个实现实现的接口.这大大简化了绑定的导航.@Singleton
@ImplementedBy
@ProvidedBy
binder.requireExplicitBindings()
尽量保持模块尽可能小,然后在创建注入器时直接组合它们(直接通过createInjector()
调用或使用除了install()
其他模块之外什么都不做的中央模块).每个模块应对其自身的应用程序负责,并应相应地命名.您的模块也不应包含复杂的初始化和动态绑定代码.通过这种方式,您将能够非常轻松地找到一个负责应用程序某些部分的模块.
这些原则非常简单,但它们使依赖管理变得非常容易.
此外,您可以使用特殊的Guice扩展来可视化依赖图.它有它的错误,它已经有一段时间了,因为我已经使用它,所以我不能给你如何避免这些错误的确切链接,但谷歌搜索它不会花费很长时间.