我刚刚开始使用Google Guice作为依赖注入框架,并试图将其改造为我最近写的一个中小型项目.我理解Guice如何工作的基础知识,但对于一些方法细节我有点模糊.例如:
1)模块用于定义绑定,然后将其输入喷射器.您是否倾向于将所有内容放入一个模块中,或者您是否倾向于将内容分解为许多较小的模块?
2)您是否在顶层有一个注射器注入整个对象树或多个点状注射器,只注入您真正需要注入的依赖关系?我在想我自己的代码库,当然,它有许多依赖项,但在测试期间我只需要控制一小部分.
3)我稍微坚持使用仅测试环境模块而不是生产版本来获得系统/集成测试的最佳方法.这个问题可能是特定于实现的,但我很好奇人们使用什么方法.作为参考,我的应用程序是基于servlet的Web应用程序.
还有其他指针吗?
Col*_*inD 13
1)通常你会把事情分解成多个模块.Guice的目标之一是帮助使代码模块化,这就是模块的用途.你如何打破这个取决于你(显然,你并不是绝对必须).更细粒度模块的一个优点是,您可以在特定包中定义模块,并使实现接口包的类 - 私有.由于模块在包中,它可以绑定那些具体类,它们可以用于配置Injector(在另一个包中).此外,只需将一个模块更换为另一个模块,而不必在单个单片模块中更改代码,就可以使代码更加灵活.
2)是的,在顶层注入整个对象树的一个注入器是通常应该完成的方式.这回到了模块的事情......使用它们将依赖关系分解为组并使用一个注入器.
3)使用配置进样器的不同入口点类.对于一个独立的应用程序,我有一个不同的main类...对于一个webapp,我想你可以单独GuiceServletContextListener进行测试.然后,您可以使用模块替换整个模块进行测试,或者使用Modules.override覆盖特定模块中的绑定等.
| 归档时间: |
|
| 查看次数: |
2140 次 |
| 最近记录: |