Dependency injection 依赖注入,无需重新编译即可更改实现
我从单例的角度理解DI的好处,并减少锅炉板代码。但我在维基百科上也发现了这一点: 另一个好处是它提供了配置灵活性,因为 可以使用给定服务的替代实现,而无需 重新编译代码Dependency injection 依赖注入,无需重新编译即可更改实现,dependency-injection,Dependency Injection,我从单例的角度理解DI的好处,并减少锅炉板代码。但我在维基百科上也发现了这一点: 另一个好处是它提供了配置灵活性,因为 可以使用给定服务的替代实现,而无需 重新编译代码 当我使用Spring或Guice时,它总是在一个服务和它的一个实现之间订立契约。我是否缺少某个功能或错误地理解了该语句?如果要为给定服务使用哪种实现的决定在配置中,您可以在不更改代码的情况下纯粹在配置中更改该决定,只要您要使用的替代实现已经存在 Spring在很大程度上就是这种情况,它通常是在应用程序启动时读取XML配置文件来做
当我使用Spring或Guice时,它总是在一个服务和它的一个实现之间订立契约。我是否缺少某个功能或错误地理解了该语句?如果要为给定服务使用哪种实现的决定在配置中,您可以在不更改代码的情况下纯粹在配置中更改该决定,只要您要使用的替代实现已经存在
Spring在很大程度上就是这种情况,它通常是在应用程序启动时读取XML配置文件来做出决定。通常需要重新编译应用程序中包含配置的部分,但应用程序的其余部分可以保持不变。当这些零件放在单独的模块/组件中时,不需要重新编译这些零件。当您使用XML配置容器时(理论上),无需重新编译任何内容 如果愿意,您甚至可以更进一步,在运行时更改行为(例如使用decorators)。+1有关更多详细信息,请参见此处: