【问题标题】:The guice AbstractModule install methodguice AbstractModule 安装方法
【发布时间】:2014-02-22 04:15:01
【问题描述】:

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

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

具体配置什么绑定?已安装模块的绑定还是调用 install 方法的类的绑定?

【问题讨论】:

    标签: java guice


    【解决方案1】:

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

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

    模块组合可能是一把双刃剑,因为不允许重复绑定:如果您的 FooModule 和 BarModule 都 install 相同的依赖模块,并且绑定不是 exact duplicates(例如,如果模块实例化一个对象在其configure 方法中),由于重复绑定,Guice 将无法创建任何同时安装 FooModule 和 BarModule 的 Injector。您可以通过在您的模块上定义 equalshashCode 来解决此问题,或者通过管理您的组合以使任何模块要么是顶级的,要么安装在另一个模块中(但不能同时安装)。

    请参阅this archived blogthis SO answer 了解更多关于去重绑定的信息。

    【讨论】:

      猜你喜欢
      • 2014-12-29
      • 1970-01-01
      • 1970-01-01
      • 2017-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-11
      • 1970-01-01
      相关资源
      最近更新 更多