> For the complete documentation index, see [llms.txt](https://potoyang.gitbook.io/spring-in-action-v4/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://potoyang.gitbook.io/spring-in-action-v4/1/1.2-rong-na-ni-de-bean.md).

# 1.2　容纳你的 Bean

在基于 Spring 的应用中，你的应用对象生存于 Spring 容器（container） 中。如图 1.4 所示，Spring 容器负责创建对象，装配它们，配置它们并管理它们的整个生命周期，从生存到死亡（在这里，可能就是 new 到 finalize()）。

![图 1.4　在 Spring 应用中，对象由 Spring 容器创建和装配，并存在容器之中](/files/-Lme7_LcmxAK4TU9VOCy)

在下一章，你将了解如何配置 Spring，从而让它知道该创建、配置和组装哪些对象。但首先，最重要的是了解容纳对象的容器。理解容器将有助于理解对象是如何被管理的。

容器是 Spring 框架的核心。Spring 容器使用 DI 管理构成应用的组件，它会创建相互协作的组件之间的关联。毫无疑问，这些对象更简单干净，更易于理解，更易于重用并且更易于进行单元测试。

Spring 容器并不是只有一个。Spring 自带了多个容器实现，可以归为两种不同的类型。bean 工厂（由 org.springframework.beans.factory.BeanFactory 接口定义）是最简单的容器，提供基本的 DI 支持。应用上下文（由 org.springframework.context.ApplicationContext 接口定义）基于 BeanFactory 构建，并提供应用框架级别的服务，例如从属性文件解析文本信息以及发布应用事件给感兴趣的事件监听者。

虽然我们可以在 bean 工厂和应用上下文之间任选一种，但 bean 工厂对 大多数应用来说往往太低级了，因此，应用上下文要比 bean 工厂更受欢迎。我们会把精力集中在应用上下文的使用上，不再浪费时间讨论 bean 工厂。
