必须处理Guice,我想知道我应该如何处理模块方面的依赖关系.
在Guice中,每个模块都由一个实例提供.因此,如果我有一个需要某个服务的模块,它会创建一个模块,为该服务添加一个绑定并安装它(binder.install(module)).
现在我有两个独立的模块,完全可以独立使用,并且都安装相同的数据库模块.
独立使用这两个模块没有问题,但如果两个模块在同一个应用程序中使用会发生什么?数据库模块将由两个模块独立加载,但不能正确.
有没有办法询问活页夹是否某种类型已经绑定?我无法使用getProvider来检查它,因为所有返回的都是LookupProvider,无论是否已经绑定了什么.
那么如何处理这种情况呢?
更新:
它接缝Guice无法提供以下功能:
Tav*_*nes 13
Guice有两个功能来处理这种情况.第一个是模块重复数据删除.这意味着如果安装两个等效的模块(by equals()和hashCode()),则只configure()运行一个方法.但是,这种解决方案有些脆弱,因为它无法在SPI转换中存活Modules.override(),等等.
第二个和IMO更好的解决方案是绑定重复数据删除.这意味着Guice将接受完全重复的绑定.因此,如果你的模块没有bind(Interface.class).to(Implementation.class),它的configure()方法运行两次甚至不重要,因为Guice将处理重复绑定就好了.
| 归档时间: |
|
| 查看次数: |
4964 次 |
| 最近记录: |