Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring上下文和Spring IOC容器都是相同的吗?ApplicationContext是它的一部分吗?_Spring - Fatal编程技术网

Spring上下文和Spring IOC容器都是相同的吗?ApplicationContext是它的一部分吗?

Spring上下文和Spring IOC容器都是相同的吗?ApplicationContext是它的一部分吗?,spring,Spring,我知道什么是应用程序上下文。它是一个提供springbean的接口 所有bean都在Spring IOC容器中初始化 但这三者是如何联系在一起的。你能解释一下吗 Springbeans是Spring管理的类的实例。您创建类并将它们“标记”为spring管理的类(将@Component,在java配置中使用@Bean,等等-有很多方法告诉spring某些特定类的实例应该由spring管理) 当spring启动时,它创建一个应用程序上下文,其中包含它解析的所有bean的注册表 Spring可以将一个

我知道什么是应用程序上下文。它是一个提供springbean的接口

所有bean都在Spring IOC容器中初始化


但这三者是如何联系在一起的。你能解释一下吗

Springbeans是Spring管理的类的实例。您创建类并将它们“标记”为spring管理的类(将
@Component
,在java配置中使用
@Bean
,等等-有很多方法告诉spring某些特定类的实例应该由spring管理)

当spring启动时,它创建一个应用程序上下文,其中包含它解析的所有bean的注册表

Spring可以将一个bean注入另一个bean,这是Spring实例化bean的方式。 “通过外部容器提供依赖项”的原则与通过类本身维护依赖项的原则称为控制反转,spring实现了这一概念

更新1

从技术上讲,没有“spring上下文”这样的东西

SpringIoC容器是一个框架,它通过提供称为应用程序上下文的技术抽象来管理bean(您的类)(它是java中的一个真实接口,在Spring代码中实现)

为了从spring中获益,bean之间应该有依赖关系。在这种情况下,实现IOC原则的spring框架可以在bean之间“注入”(提供、解决)依赖关系

以下是一个例子:


@Component
class A {

}

@Component
class B {
  @Autowired
  private A a;
}
当spring容器实例化类B(创建对象:
new B()
)时,它“理解”这个实例(我们称它为bean,因为它由spring管理)对类a具有“依赖性”,并且由于a也由spring管理,它可以“注入”(读取并放入一个值)到类B的属性a中


这被称为控制反转。作为程序员,您不必自己实例化属性
b
,spring会为您进行实例化。

Mark感谢您的解释。我得到了应用上下文。请您解释一下这个场景中的Spring上下文和Spring IOC容器。这会有帮助的。请看更新1,希望它能让事情变得更清楚