【发布时间】:2015-08-10 12:44:24
【问题描述】:
昨天在一次采访中,有人问我春季的 DI 和 IoC 是什么。我的回复是:
当
class(A)扩展抽象class(B)或实现interface(B)或在其中创建任何类的class(B)的对象,然后A据说是 依赖于B。注入这种依赖,即将对象注入 costructor 或在 setter 方法中称为 DI 并且在此过程中 对创建对象的控制权转到 XML 等“外部世界” 配置,这种控制反转就是 IoC。 DI 不是必要的 IOC。在没有 IOC 的情况下,我们仍然可以拥有 DI。
面试官不同意我的看法——我哪里错了?
还有一件事-
因为我们在构造函数或设置方法参数中使用了
Super class reference variable或coding through interface。这是任何方式 与DI/IOC相关或者这只是为了实现loose coupling?
【问题讨论】:
-
虽然从设计角度来看,继承关系被认为是一种依赖,在spring的情况下,只有composition 被认为是一个dependency。您注入 dependent bean 及其 properties
-
你应该看看this问题。我要说的是 inheritance 示例在 Spring DI 和 IOC 的上下文中并不适用。如果您使用
has-a关系来解释您的理解,那会更有意义 -
Composition在A类中有一个B类的实例,例如作为一个字段。 -
@dubey-theHarcourtians - 我相信你关于依赖的第一句话是误导
标签: spring dependency-injection inversion-of-control