我从单身人士的角度理解DI的好处并减少锅炉板代码。但我也在维基百科上发现了这个:
另一个好处是它提供了配置灵活性,因为 可以不使用给定服务的替代实现 重新编译代码
当我使用Spring或Guice时,它总是在1个服务和1个实现之间签订合同。我错过了一个功能或错误地理解了这个陈述吗?
答案 0 :(得分:2)
您通常必须重新编译包含配置的应用程序部分,但应用程序的其余部分可以保持不变。当这些部件放在单独的模块/组件中时,不需要重新编译这些部件。使用XML配置容器时(理论上)不需要重新编译。
如果愿意,你甚至可以更进一步改变运行时的行为(例如使用装饰器)。
答案 1 :(得分:0)
如果决定使用哪个实现给定服务,那么只要您想要使用的替代实现已经存在,您就可以完全在配置中更改该决策,而不需要更改代码。
在很大程度上,Spring的情况很明显,这个决定通常是在应用程序启动时读取的XML配置文件。