Spring - BeanFactory 详解

当我们谈论 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 则支持。

!Spring Container

在深入具体的实现之前,让我们先通过下面的表格了解一下 Bean Factory 的一些常用方法:

方法

描述

containsBean(String name)

此 bean 工厂是否包含具有给定名称的 bean 定义或外部注册的单例实例?

getAliases(String name)

返回给定 bean 名称的别名(如果有)。

getBean(Class requiredType)

返回唯一匹配给定对象类型的 bean 实例(如果有)。

getBean(Class requiredType, Object… args)

返回指定 bean 的一个实例,该实例可能是共享的,也可能是独立的。

getBean(String name)

返回指定 bean 的一个实例,该实例可能是共享的,也可能是独立的。

getBean(String name, Class requiredType)

返回指定 bean 的一个实例,该实例可能是共享的,也可能是独立的。

getBean(String name, Object… args)

返回指定 bean 的一个实例,该实例可能是共享的,也可能是独立的。

getBeanProvider(Class requiredType)

返回指定 bean 的提供者,允许对实例进行延迟的按需检索,包括可用性和唯一性选项。

getBeanProvider(ResolvableType requiredType)

返回指定 bean 的提供者,允许对实例进行延迟的按需检索,包括可用性和唯一性选项。

getType(String name)

确定具有给定名称的 bean 的类型。

getType(String name, boolean allowFactoryBeanInit)

确定具有给定名称的 bean 的类型。

isPrototype(String name)

此 bean 是否为原型作用域?也就是说,getBean(java.lang.String) 是否总是返回独立的实例?

isSingleton(String name)

此 bean 是否为共享单例?也就是说,getBean(java.lang.String) 是否总是返回同一个实例?

isTypeMatch(String name, Class typeToMatch)

检查给定名称的 bean 是否与指定的类型匹配。

isTypeMatch(String name, ResolvableType typeToMatch)

检查给定名称的 bean 是否与指定的类型匹配。### 实施步骤:

  • 首先,使用 start.spring.io 创建一个 Spring 项目。
  • 创建一个 POJO 类。
  • bean-factory-demo.xml 文件中配置 Student bean。
  • 然后在应用程序主类中编写调用代码。

项目结构:

创建好所有包和类之后,项目结构将如下所示:

!Folder-Structure

在 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

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。如需转载,请注明文章出处豆丁博客和来源网址。https://shluqu.cn/41713.html
点赞
0.00 平均评分 (0% 分数) - 0