Guice有两个功能可以处理这种情况。首先是 模块重复数据删除
。这意味着,如果安装了两个等效的模块(按
equals()和
hashCode()),则只能
configure()运行一个方法。但是,此解决方案有些脆弱,因为它无法经受住SPI转换
Modules.override()等。
第二个也是IMO更好的解决方案是 绑定重复数据删除
。这意味着Guice将接受完全相同的绑定。因此,如果您的模块执行了
bind(Interface.class).to(Implementation.class),它的
configure()方法是否运行两次甚至都没有关系,因为Guice可以很好地处理重复的绑定。



