千家信息网

如何初始化容器与DefaultListableBeanFactory

发表于:2025-11-20 作者:千家信息网编辑
千家信息网最后更新 2025年11月20日,本篇内容介绍了"如何初始化容器与DefaultListableBeanFactory"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希
千家信息网最后更新 2025年11月20日如何初始化容器与DefaultListableBeanFactory

本篇内容介绍了"如何初始化容器与DefaultListableBeanFactory"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

1入口

从 JavaConfig 中加载配置的 AnnotationConfigApplicationContext 启动方式如下:

进去之后发现构造其实是调用的当前无参构造。

所以在启动时也可以直接声明无参构造,改写为下面这种:

public class AnnotationConfigApplicationTest {   public static void main(String[] args) {    AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();    context.register(JavaConfig.class);   context.refresh();    System.out.println(context.getBean(UserComponent.class));   } }

今天就研究研究无参构造这一部分究竟做了什么逻辑!

无参构造

其中的 StartupStep 是 5.3 新增的类,看代码注释的意思是:表示用来记录启动过程中的一些指标信息等。暂时不做研究。

主要研究红框部分!注意,这一块并不代表只有红框部分!

因为 AnnotationConfigApplicationContext 继承了GenericApplicationContext,所以会先执行父类的构造方法。

所以这里会创建一个 DefaultListableBeanFactory 的容器。

DefaultListableBeanFactory


DefaultListableBeanFactory UML

虽然说 Spring 的 BeanFactory 定义了容器的基础概念、接口方法等,但是 DefaultListableBeanFactory 才是一个真正可以 new 出来的具体的容器,当然也可以暂且称之为 bean 工厂。

下面来看一下 DefaultListableBeanFactory 里面都有什么?

在 DefaultListableBeanFactory 里面会初始化很多参数,其中重点关注的是下面两个参数:

/** Map of bean definition objects, keyed by bean name. */ // BeanDefinition 的存储 Map 其中 key 为 beanName private final Map beanDefinitionMap = new ConcurrentHashMap<>(256);  /** List of bean definition names, in registration order. */ // BeanName 的集合 private volatile List beanDefinitionNames = new ArrayList<>(256);

其中 BeanDefinition 描述了一个 bean 实例,该实例具有属性值,构造函数参数值以及具体实现所提供的更多信息。

对应的 beanDefinitionMap 就是存储的初始化的 beanName 和 BeanDefinition。

至于 BeanDefinition 具体内容,下一节再做介绍。

2.总结

通过上面的阅读,可以在初始化流程中增加一部分模块,即实例化 DefaultListableBeanFactory

再回顾一下 DefaultListableBeanFactory 的概念。

ConfigurableListableBeanFactory 和 BeanDefinitionRegistry 接口的默认实现:基于bean定义元数据的成熟bean工厂,可通过后处理器进行扩展。重点需要把握的是 DefaultListableBeanFactory 内部定义了 BeanDefinition 的 Map。

"如何初始化容器与DefaultListableBeanFactory"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

容器 研究 内容 参数 实例 更多 信息 工厂 接口 方法 概念 知识 过程 部分 重点 存储 实用 成熟 学有所成 接下来 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网络安全法意义的表述 三级网络技术可以刷题过吗 数据库技术与应用答案Sql 软件开发和软件是什么关系 图片存入数据库sql 国内网络安全学校排名 网络安全法提及个人隐私的有 数据库优先级最高的是 服务器的热水可以喝吗 cache服务器端状态管理 当今世界网络安全 信息中心服务器名称怎么填 软件开发公司成本有些什么 去日本做软件开发 工资 t140服务器按开机键无法点亮 服务器部署架构图linux 小公司适合用服务器么 江苏数据库培训报名 甘肃省村庄规划数据库标准 数据库查询语句遇到的问题 怎么解决网卡和服务器的问题 双阳区现代化网络安全质量服务 亚米通信网络技术公司 数据库可变字段设计 搭建 yum源服务器 河南新华互联网科技学校 和谐校园网络安全黑板报 网络安全为人民手抄报模板 杭州神州网络技术有限公司 江苏本地软件开发定做价格
0