何时使用依赖注入vs服务定位器

时间:2012-08-30 21:30:18

标签: java-ee dependencies service-locator

您何时会使用依赖注入?使用依赖注入有什么压倒性的好处吗?

1 个答案:

答案 0 :(得分:5)

福勒在他的Inversion of Control Containers and the Dependency Injection pattern Heading中有两个很好的比较。在他的总结思路中,他说

  

依赖注入是Service Locator的有用替代方案。什么时候   构建应用程序类两者大致相当,但我   认为服务定位器因其更多而略有优势   直截了当的行为。但是,如果您正在构建类   在多个应用程序中使用依赖注入是更好的   选择。

您可以在here

中找到更多观点和比较

对于DI:

  • 更容易确定组件具有哪些依赖关系 - 请注意 构造函数。
  • 组件不依赖于Service Locator 如果组件使用不同的组件,则没有问题 框架。
  • DI可以使测试更容易,但是一个好的服务定位器 机制将使存根同样可行

反对DI:

  • 更难调试和理解。
  • 组件配置后,组件无法从注入器请求额外服务。