千家信息网

如何初始化容器与DefaultListableBeanFactory

发表于:2025-02-13 作者:千家信息网编辑
千家信息网最后更新 2025年02月13日,本篇内容介绍了"如何初始化容器与DefaultListableBeanFactory"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希
千家信息网最后更新 2025年02月13日如何初始化容器与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安全错误 数据库的锁怎样保障安全 小程序商城有数据库吗 激战2泰坦之爪服务器怎么样 软件开发的部门经济科目 嵌入式软件开发年纪越大 网络技术与软件工程的区别 苹果突然连接不了服务器 警校学的网络安全与执法好就业吗 神武4端游卧虎藏龙服务器时间 西安软件开发公司详细介绍 高科技互联网金融定位 精易 类_ODBC数据库 深圳智慧电梯软件开发怎么样 我的世界lce服务器是被谁炸的 csv导入数据库跳过空行 网络安全维护实习报告 知网数据库裁判文书查重 网络安全的义务和权利 药品信息资源常用中文数据库 仙海网络安全教育 hcnp网络技术学习指南 软件开发人才从事 软件开发公司使用盗版vs 数据库什么情况下不考虑设置索引 网络安全EDG web服务器首页地址含义 电子表格随机生成数据库 软件开发有限公司要求 gtf网络安全大赛2022 一个服务器可以开几个sf 南邮网络安全技术复习
0