概念:dependency injection, IOC, vs callback

 

callback function as a dependency of the object that it is being passed into. DI is the process of providing the callback (the dependency) to the object. (For example: by giving it to the object via its constructor, a method call, a setter, etc.).

翻译: callback是具体的依赖, DI是注入依赖的过程

 

DI是IoC的子集

  • IoC意味着对象不会创建他们依赖的其他对象来完成他们的工作。相反,他们从外部服务(例如,xml文件或单个应用程序服务)获取他们需要的对象。我使用的IoC的2个实现是DI和ServiceLocator。
  • DI意味着在不使用具体对象而是使用抽象(接口)的情况下完成获取依赖对象的IoC原则。这使得所有组件链可测试,导致更高级别的组件不依赖于更低级别的组件,仅来自接口。Mocks实现了这些接口。

 

IoCI nversion o f C ontrol ): - 这是一个通用术语,以多种方式实现(事件,代理等)。

DID ependency I njection): - DI是IoC的子类型,通过构造函数注入,setter注入或接口注入实现

但是,Spring仅支持以下两种类型:

  • 二传手注射
    • 基于setter的DI是通过在调用无参数构造函数或无参数静态工厂方法来实例化其bean之后调用用户bean上的setter方法来实现的。
  • 构造函数注入
    • 基于构造函数的DI是通过调用具有多个参数的构造函数来实现的,每个参数代表一个协作者。使用这个我们可以验证注入的bean不是null并且快速失败(编译时失败而不是运行时),所以我们得到了启动应用程序本身NullPointerException: bean does not exist构造函数注入是注入依赖项的最佳实践。

 

posted on 2019-01-17 23:40  cutepig  阅读(267)  评论(0编辑  收藏  举报

导航