IoC 也称为依赖注入 (DI)。这是一个过程,其中对象仅通过构造函数参数、工厂方法的参数或在对象实例被构造或从工厂方法返回后在对象实例上设置的属性来定义它们的依赖项(即,它们使用的其他对象) . 然后容器在创建 bean 时注入这些依赖项。这个过程基本上是 bean 本身的逆过程(因此得名,控制反转)。
在org.springframework.beans
和org.springframework.context
包是Spring框架的IoC容器的基础。
BeanFactory接口提供了一种能够管理任何类型对象的高级配置机制。ApplicationContext是其实现字类,丰富了更多的功能:
-
更容易与 Spring 的 AOP 特性集成
-
消息资源处理(用于国际化)
-
活动发布
-
应用层特定的上下文,例如
WebApplicationContext
在 Web 应用程序中使用的 。
简而言之,它BeanFactory
提供了配置框架和基本功能,并ApplicationContext
添加了更多企业特定的功能。该ApplicationContext
是对一个完整的超集BeanFactory
,并在Spring的IoC容器的描述本章独占使用。
Bean
在 Spring 中,构成应用程序主干并由 Spring IoC 容器管理的对象称为 bean。bean 是由 Spring IoC 容器实例化、组装和管理的对象。否则,bean 只是应用程序中众多对象之一。Bean 以及它们之间的依赖关系反映在容器使用的配置元数据中。
Bean 与 java 对象的区别?
Bean 是一个经历了完整Bean生命周期过程的结果对象,可以理解为它是一个特殊的java对象。普通的java对象是不需要经历完整的Bean创建过程的,只需要new。所以:bean是一定是java对象,但是java对象不一定是bean。
容器概述
该org.springframework.context.ApplicationContext
接口代表 Spring IoC 容器,负责实例化、配置和组装 bean。容器通过读取配置元数据来获取有关要实例化、配置和组装哪些对象的指令。配置元数据以 XML、Java 注释或 Java 代码表示。它可以让您表达组成应用程序的对象以及这些对象之间丰富的相互依赖关系。
下图显示了 Spring 如何工作的高级视图。您的应用程序类与配置元数据相结合,因此,在ApplicationContext
创建和初始化之后,您就有了一个完全配置且可执行的系统或应用程序。