当我们谈论 Spring 时,首要的核心概念就是依赖注入。而这一机制之所以能实现,是因为 Spring 本质上就是一个容器,它的行为就像是一个生产 Beans(Bean) 的工厂。与之类似的,BeanFactory 接口就是最基础的容器,它提供了一种高级配置机制,用于实例化、配置和管理 Bean 的生命周期。
Beans(Bean) 是指由 Spring IoC 容器 在运行时进行配置的 Java 对象。BeanFactory 代表了一个基础的 IoC 容器,它是 ApplicationContext(应用上下文) 接口的父级接口。BeanFactory 利用 Bean 及其依赖关系的元数据,在运行时创建和配置这些 Bean。BeanFactory 会根据配置文件(通常是 XML)加载 Bean 的定义以及 Bean 之间的依赖关系;当然,如果使用 Java 配置,也可以在需要时直接返回 Bean。此外,还有其他类型的配置文件,例如 LDAP、RDMS、属性文件等。需要注意的是,BeanFactory 不支持基于注解的配置,而 ApplicationContext 则支持。
在深入具体的实现之前,让我们先通过下面的表格了解一下 Bean Factory 的一些常用方法:
描述
—
此 bean 工厂是否包含具有给定名称的 bean 定义或外部注册的单例实例?
返回给定 bean 名称的别名(如果有)。
返回唯一匹配给定对象类型的 bean 实例(如果有)。
返回指定 bean 的一个实例,该实例可能是共享的,也可能是独立的。
返回指定 bean 的一个实例,该实例可能是共享的,也可能是独立的。
返回指定 bean 的一个实例,该实例可能是共享的,也可能是独立的。
返回指定 bean 的一个实例,该实例可能是共享的,也可能是独立的。
返回指定 bean 的提供者,允许对实例进行延迟的按需检索,包括可用性和唯一性选项。
返回指定 bean 的提供者,允许对实例进行延迟的按需检索,包括可用性和唯一性选项。
确定具有给定名称的 bean 的类型。
确定具有给定名称的 bean 的类型。
此 bean 是否为原型作用域?也就是说,getBean(java.lang.String) 是否总是返回独立的实例?
此 bean 是否为共享单例?也就是说,getBean(java.lang.String) 是否总是返回同一个实例?
检查给定名称的 bean 是否与指定的类型匹配。
检查给定名称的 bean 是否与指定的类型匹配。### 实施步骤:
- 首先,使用 start.spring.io 创建一个 Spring 项目。
- 创建一个 POJO 类。
- 在 bean-factory-demo.xml 文件中配置 Student bean。
- 然后在应用程序主类中编写调用代码。
项目结构:
创建好所有包和类之后,项目结构将如下所示:
在 Spring 中配置 Bean Factory 的分步实现
第 1 步: 创建一个 Student POJO 类。
现在我们将在 Student 类文件中定义 bean。
Student.java:
Java
CODEBLOCK_99c27d9d
第 2 步: 在 bean-factory-demo.xml 文件中配置 Student bean。
XML Bean Configuration:
XML
“
<beans xmlns="http://www.springframework.org/schema/beans/"
xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans/
https://www.springfram