加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 掌握Google Guice

发布时间:2020-12-14 05:38:24 所属栏目:Java 来源:网络整理
导读:我刚刚开始使用Google Guice作为依赖注入框架,并试图将其改造为我最近写的一个中小型项目.我了解Guice如何工作的基础知识,但对某些方法细节有些模糊.例如: 1)模块用于定义绑定,然后将其绑定到注入器中.你倾向于将一切都放在一个模块中,还是倾向于将事情分解
我刚刚开始使用Google Guice作为依赖注入框架,并试图将其改造为我最近写的一个中小型项目.我了解Guice如何工作的基础知识,但对某些方法细节有些模糊.例如:

1)模块用于定义绑定,然后将其绑定到注入器中.你倾向于将一切都放在一个模块中,还是倾向于将事情分解成许多较小的模块?

2)您是否在顶层注入了一个注射整个对象树或多个注射器的注射器,仅注射您真正需要注入的依赖项?我在这里考虑我自己的代码库,当然,它有很多的依赖关系,但只有少数几个我需要在测试期间进行控制.

3)我稍微停留在使用仅测试环境的模块而不是生产版本进行系统/集成测试的最佳方式.这个问题很可能是具体的实现,但我很好奇人们使用什么方法.作为参考,我的应用程序是一个基于servlet的网络应用程序.

任何其他指针?

解决方法

1)通常你会把事情分解成多个模块. Guice的目标之一是帮助代码模块化,这就是模块.你如何打破这一切取决于你(显然你绝对不需要).更精细的模块的一个优点是您可以定义特定包中的模块,并使实现接口的类package-private.由于模块在包中,因此可以绑定这些具体类,并可用于配置Injector(在另一个包中).此外,您可以通过将一个模块更改为另一个模块,而不必在单个单个模块中更改代码,从而使您的代码更灵活.

2)是的,顶级注射器一个注射整个物体树是通常应该做的事情.这返回到模块的事情…使用它们将依赖关系分解成组并使用一个注入器.

3)使用不同的入门点类来配置进样器.对于一个独立的应用程序,我会有一个不同的主类…对于webapp,我想你可以单独使用GuiceServletContextListener进行测试.然后,您可以使用模块替换整个模块进行测试,或者使用Modules.override替换特定模块中的绑定等.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读