指南抽象模块安装方法

2022-08-31 19:36:28

类中的方法有什么作用?有人可以向我解释一下吗?从我从guice网站上阅读的文档中,我所能得到的只是:install()AbstractModule

使用给定的模块配置更多绑定。

究竟配置了哪些绑定?已安装模块中的绑定还是调用 install 方法的类的绑定?


答案 1

install允许组合:在其方法中,FooModule可以安装FooServiceModule(例如)。这意味着仅基于FooModule创建的注入器将包括FooModule和FooServiceModule中的绑定和提供程序。configure

您可能会看到用于将模块拆分为逻辑子模块以方便可读性或测试,或者用于高级模块以确保配置其依赖项。您还可以使用它来实例化具有不同构造函数参数的模块实例(例如,绑定多个数据存储),或者安装自动生成的模块实例,例如通过 FactoryModuleBuilder 创建的模块实例。install

模块组合可能是一把双刃剑,因为不允许重复绑定:如果您的 FooModule 和 BarModule 都是相同的依赖模块,并且绑定不是完全相同的重复(例如,如果模块在其方法中实例化对象),Guice 将无法创建任何同时安装 FooModule 和 BarModule 的注入器,因为存在重复绑定。您可以通过定义 和 模块 来解决此问题,或者通过管理您的组合,使任何模块要么是顶级的,要么只安装在另一个模块中(但绝不是两者兼而有之)。installconfigureequalshashCode

有关重复数据消除绑定的详细信息,请参阅此存档博客此 SO 答案


答案 2

推荐