spring源码概念解析-spring生命周期

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
1.Spring生命周期
BeanFactory的⽣命周期
在这里插入图片描述
ApplicationContext的⽣命周期
在这里插入图片描述
初始化的过程都是⽐较⻓,我们可以分类来对其进⾏解析:
Bean⾃身的⽅法:如调⽤ Bean 构造函数实例化 Bean,调⽤ Setter 设置 Bean 的属性值以及通
过的 init-method 和 destroy-method 所指定的⽅法初始化和销毁bean;
Bean级⽣命周期接⼝⽅法:如 BeanNameAware、 BeanFactoryAware、 InitializingBean 和
DisposableBean,这些接⼝⽅法由 Bean 类直接实现;
容器级⽣命周期接⼝⽅法:在上图中带“★” 的步骤是由 InstantiationAwareBean PostProcessor
和 BeanPostProcessor 这两个接⼝实现,⼀般称它们的实现类为“ 后处理器” 。 后处理器接⼝⼀般
不由 Bean 本身实现,它们独⽴于 Bean,实现类以容器附加装置的形式注册到Spring容器中并通
过接⼝反射为Spring容器预先识别。当Spring 容器创建任何 Bean 的时候,这些后处理器都会发
⽣作⽤,所以这些后处理器的影响是全局性的。当然,⽤户可以通过合理地编写后处理器,让其仅
对感兴趣Bean 进⾏加⼯处理
ApplicationContext和BeanFactory不同之处在于:
ApplicationContext会利⽤Java反射机制⾃动识别出配置⽂件中定义的BeanPostProcessor、
InstantiationAwareBeanPostProcesso 和BeanFactoryPostProcessor后置器,并⾃动将它们注
册到应⽤上下⽂中。⽽BeanFactory需要在代码中通过⼿⼯调⽤
进⾏注册
addBeanPostProcessor() ⽅法
ApplicationContext在初始化应⽤上下⽂的时候就实例化所有单实例的Bean。⽽BeanFactory在
初始化容器的时候并未实例化Bean,直到第⼀次访问某个Bean时才实例化⽬标Bean。
Bean的初始化
在这里插入图片描述
简要总结:
BeanDefinitionReader读取Resource所指向的配置⽂件资源,然后解析配置⽂件。配置⽂件中每
⼀个解析成⼀个BeanDefinition对象,并保存到BeanDefinitionRegistry中;
容器扫描BeanDefinitionRegistry中的BeanDefinition;调⽤InstantiationStrategy进⾏Bean实例
化的⼯作;使⽤BeanWrapper完成Bean属性的设置⼯作;
单例Bean缓存池:Spring 在DefaultSingletonBeanRegistry类中提供了⼀个⽤于缓存单实例
Bean 的缓存器,它是⼀个⽤HashMap实现的缓存器,单实例的Bean以beanName为键保存在这
个HashMap中
2.BeanFactory和FactoryBean的区别
在这里插入图片描述
在这里插入图片描述
可以进行一些自定义操作

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2809541.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

matlab新能源汽车三自由度操纵稳定性分析及优化

1、内容简介 略 可以交流、咨询、答疑 55-新能源汽车三自由度操纵稳定性分析及优化 2、内容说明 略 摘 要 电动化是节能减排、寻求替代能源的最佳途径,已成为行业共识,论文基于江西科技学院桑塔纳轿车油改气项目,在拆除发动机、变速…

Unity(第六部)向量的理解和算法

标量:只有大小的量。185 888 999 (类似坐标) 向量:既有大小,也有方向。(类似以个体为主体的方向,前方一百米) 向量的模:向量的大小。(类似以个体为主体的方向,前方一百米、只取一百米…

【Crypto | CTF】BugKu 简单的RSA

天命:这题也不算简单了,要反编译,要灵活一点 首先收到pyc文件,拿去反编译出来,可以用在线反编译,也可以用工具反编译 在线:python反编译 - 在线工具 工具:https://download.csdn.n…

基于Java的传统工艺品销售系统的设计与实现

网上购物尚未流行前需要购买传统工艺品的人们都是到遍布于大街小巷的商场商店中进行挑选购买,除非抱有非常明确的目标,否则是很难在短时间内挑选购买到所需传统工艺品的。网上购物在国内的兴起则彻底颠覆了传统的线下购物模式,线下实体商场也…

Git命令操作

什么是Git? Git是⼀个免费的,开源的分布式版本控制软件系统 git区域 存储区域:Git软件⽤于存储资源得区域。⼀般指得就是.git⽂件夹 ⼯作区域:Git软件对外提供资源得区域,此区域可⼈⼯对资源进⾏处理。 暂存区&am…

中海油、中石化、中石油校招历年真题和题库

中海油、中石化、中石油是中国领先的石油和天然气公司,拥有雄厚的实力和丰富的资源,是许多求职者梦寐以求的就业机会。为了帮助应聘者更好地备战这三家公司的校园招聘,我特别整理了三套精心准备的校招试题资料,涵盖了各个领域的知…

【计算机网络】1.4 接入网和物理媒体

1.4 接入网和物理媒体 问题:怎样将端系统和边缘路由器连接? 答:有线方式(住宅接入网络、单位接入网络等)或无线方式(无线接入网络)。 有线接入方式 光纤同轴混合网是基于已有的有线电视网开发的…

五种多目标优化算法(MOHHO、MOCS、MOFA、NSWOA、MOAHA)性能对比(提供MATLAB代码)

一、5种多目标优化算法简介 多目标优化算法是用于解决具有多个目标函数的优化问题的一类算法。其求解流程通常包括以下几个步骤: 1. 定义问题:首先需要明确问题的目标函数和约束条件。多目标优化问题通常涉及多个目标函数,这些目标函数可能…

基于相位的运动放大:如何检测和放大难以察觉的运动(02/2)

目录 一、说明二、算法三、准备处理四、高斯核五、带通滤波器六、复杂的可操纵金字塔七、最终预处理步骤八、执行处理九、金字塔的倒塌十、可视化结果十一、结论 一、说明 日常物体会产生人眼无法察觉的微妙运动。在视频中,这些运动的幅度小于一个像素,…

matplotlib坐标投影

文章目录 三维坐标极坐标地理坐标 matplotlib教程: 初步📈 子图绘制 三维坐标 【plt】可以将二维图形嵌入到三维坐标系中,方法也很简单,只需用创建一个子坐标框架,并指定其投影方式为3d,并通过zdir参数指…

Python 鼠标模拟

鼠标模拟即:通过python 进行模拟鼠标操作 引入类库 示例如下: import win32api import win32con import time 设置鼠标位置 设置鼠标位置为窗口中的回收站。 示例如下: # 设置鼠标的位置 win32api.SetCursorPos([30, 40]) 双击图标 设置…

基于Java的艺培管理解决方案

✍✍计算机毕业编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java、…

Linux学习之vi/vim详细介绍

目录 ​编辑 1. 什么是 vim? 2. vi/vim 的使用 2.1 命令模式 2.2 输入模式 2.3 底线命令模式 3. vi/vim 使用实例 3.1 使用 vi/vim 进入一般模式 3.2 按下 i 进入输入模式(也称为编辑模式),开始编辑文字 3.3 按下 ESC 按钮回到一般模式…

linux-并发通信

一.linux-tcp通信框架 1.基础框架 1.1 tcp 服务器框架 1.套接字 #include <sys/socket.h> int socket(int domain, int type, int protocol);
 返回的文件描述符可以指向当前的socket&#xff0c;后续通过对文件描述符的访问就可以配置这个socket 成功时返回文件…

纯国产轻量化数字孪生:智慧城市、智慧工厂、智慧校园、智慧社区。。。

AMRT 3D数字孪生引擎介绍 AMRT3D引擎是一款融合了眸瑞科技的AMRT格式与轻量化处理技术为基础&#xff0c;以降本增效为目标&#xff0c;支持多端发布的一站式纯国产自研的CS架构项目开发引擎。 引擎包括场景搭建、UI拼搭、零代码交互事件、光影特效组件、GIS/BIM组件、实时数据…

linux系统git常规操作

Git命令常规操作 常用命令说明常用操作示意图文件的状态变化周期 添加文件跟踪文件会添加到.git的隐藏目录由工作区提交到本地仓库查看git的状态提交后的git目录状态 删除文件重命名暂存区数据查看历史记录还原历史数据还原未来数据标签使用对比数据 常用命令说明 命令命令说明…

一键生成请求方法的工具 —— OpenAPI Typescript Codegen

文章目录 用法自定义请求参数的方法1&#xff09;使用代码生成器提供的全局参数修改对象2&#xff09;直接定义 axios 请求库的全局参数&#xff0c;比如&#xff1a;全局请求响应拦截器 报错解决 用法 首先下载axios npm install axios官网&#xff1a;https://github.com/f…

【JavaEE】 spring boot的配置文件详解

spring boot的配置文件详解 文章目录 spring boot的配置文件详解常用配置spring boot的配置文件1. properties 文件2. YAML 文件3. 多环境配置4. 配置文件优先级5. 配置属性注入特殊说明 properties配置文件基本语法 例子peoperties文件的缺点 YML配置文件YML使用yml 配置不同数…

29-资源清单的管理工具-helm

一、helm的介绍 1&#xff0c;helm的价值概述 如下图所示&#xff0c;在一个企业中&#xff0c;可能存在多个不同的应用业务&#xff0c;每个业务可能包含多至十几、甚至几十个资源清单&#xff0c;那么对于“运维”和“研发”人员来讲&#xff0c;这么多的资源清单&#xff0…

压力测试工具Jmeter的下载与使用

1、进入官网下载Jmeter https://jmeter.apache.org/ 国内镜像&#xff08;下载的慢的话可以用国内镜像下载&#xff09; https://mirrors.cloud.tencent.com/apache/jmeter/binaries/ 2、跳转到下载页面 3、根据不同系统下载相应版本的Jmeter压缩包&#xff0c;Linux系统下载…