
Spring启动过程主要流程
发布日期:2021-05-18 06:39:13
浏览次数:19
分类:精选文章
本文共 1506 字,大约阅读时间需要 5 分钟。
BeanFactory创建与初始化流程
BeanFactory的创建与初始化过程是一个复杂但重要的步骤,直接关系到应用程序的功能是否正常运行。在实际开发中,这一过程通常通过类似Spring的依赖注入框架来实现。以下是简要说明该流程的主要内容:
创建BeanFactory并注册BeanDefinition
首先,需要创建BeanFactory实例,并在其内部注册一个BeanDefinition对象。BeanDefinition包含了所有Bean的配置信息,比如它们的类名、作用域以及初始化方法等。通过将BeanDefinition添加到BeanFactory的beanDefinitionMap
属性中,完成Bean的基础配置。 执行BeanFactoryPostProcessor的postProcessBeanFactory方法
在BeanFactory初始化后, çağırılmasıamarqz marqueed BeanFactoryPostProcessor接口的实现类。这些处理器负责对整体BeanFactory的配置进行后续处理,确保所有必要的扩展和调整得以应用。注册并初始化BeanPostProcessor实现类
接下来,需要遍历并注册所有实现了BeanPostProcessor接口的类。这些类通常负责单独Bean的初始化过程,比如根据上下文设置某些属性或执行特定的初始化逻辑。执行InstantiationAwareBeanPostProcessorAdapter的postProcessBeforeInstantiation方法
在Bean的实例化之前,InstantiationAwareBeanPostProcessorAdapter的实现类会被调用。这些处理器可以根据需要修改或准备Bean的初始化属性,确保实例化过程顺利进行。** Bean的实例化**
通过调用 BeanFactory 的getBean
方法或相关方法,依赖关系注入框架会根据配置创建对应Bean的实例。这一步骤涉及解析Bean的定义,初始化相应的类,以及处理可能的异常案例。 执行InstantiationAwareBeanPostProcessorAdapter的postProcessAfterInstantiation方法
在Bean实例化之后,InstantiationAwareBeanPostProcessorAdapter的实现类会再次被调用。这些处理器可以对刚刚创建的Bean进行后续处理,比如验证其状态或应用进一步的配置。执行BeanPostProcessor的postProcessBeforeInitialization方法
在Bean初始化之前,所有BeanPostProcessor的实现类会被调用,以执行初始化前的准备工作。这一步确保了在Bean初始化过程中能够获取到所有必要的资源和参数。初始化Bean
通过调用 BeanFactory 的initializeBean
方法,实现对Bean的全面的初始化操作。这一步骤通常包括解析Bean的自定义属性,执行初始化方法以及管理Bean的生命周期。 执行BeanPostProcessor的postProcessAfterInitialization方法
Bean初始化完成后,所有BeanPostProcessor的实现类会再次被调用。这些处理器可以对Bean的初始化结果进行检查或修改,确保最终状态的正确性。通过以上步骤,依赖关系注入框架能够按需创建和初始化各类Bean,确保应用程序能够满足各种功能需求。
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2025年04月11日 17时56分55秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
tf.parse_single_example()
2019-03-17
latex表示极限
2019-03-17
tf.tuple
2019-03-17
C++实现二叉树的最近公共祖先
2019-03-17
CentOS7安装mysql5.6
2019-03-17
windows下通过cmd杀死进程的方法
2019-03-17
开放式系统互联模型(网络的七层架构)
2019-03-17
windows系统配置自动tomcat
2019-03-17
14数组的定义和存储空间
2019-03-17
49数据通路的功能和基本结构
2019-03-17
Java面试宝典(2020版)
2019-03-17
4大继承模式
2019-03-17
06二维数组
2019-03-17
Express处理静态资源(代码演示)
2019-03-17
vue-cli的介绍和安装
2019-03-17
复用与重映射
2019-03-17
stm32学习之按键输入检测
2019-03-17
Springboot 初學習
2019-03-17
如何用华为位置服务实现搜索位置返回父子节点信息
2019-03-17
2020年云南省专升本 - 「计算机」专业各院校招生计划
2019-03-17