spring Bean生命周期 源代码分析 AbstractAutowireCapableBeanFactory createBean doCreateBean

文章目录

    • 一、生命周期关键步骤
        • `1.1 前置条件`
        • `1.2 创建bean`
    • 二、Bean生命周期、核心源码分析
        • 2.1 前置条件, 源代码
        • 2.2 创建bean, 源代码


一、生命周期关键步骤

1.1 前置条件

1.创建rootBean
生成RootBeanDefinition

2.对bean定义的方法,进行验证、重写
调用方法prepareMethodOverrides()

3.返回一个代理对象,用于在实例化前、或实例化后,指定插入切面逻辑
调用方法resolveBeforeInstantiation()

1.2 创建bean

1.前置条件完成后,实例化Bean

2.合并BeanDefinition的后置处理器,允许修改或合并bean的定义。

3.构建Bean单例

4.Bean实例填充属性值
方法是populateBean

5.初始化Bean
(1)设置bean的BeanName、BeanClassLoader、BeanFactory; 方法是invokeAwareMethods
(2)初始化前置处理, 方法是applyBeanPostProcessorsBeforeInitialization
(3)具体初始化, 方法是invokeInitMethods; 判断是否自定义初始化 invokeCustomInitMethod
(4)初始化后置处理, 方法是applyBeanPostProcessorsAfterInitialization

6.处理Bean的引用,或抛出循环依赖异常

7.注册bean的销毁


二、Bean生命周期、核心源码分析

源码类名是:AbstractAutowireCapableBeanFactory

创建bean入口
createBean(Class beanClass)

再调用createBean的重载方法
createBean(String beanName, RootBeanDefinition mbd, @Nullable Object[] args)

createBean是bean创建的前置条件

再调用doCreateBean
doCreateBean(final String beanName, final RootBeanDefinition mbd, final @Nullable Object[] args)

doCreateBeanbean创建的核心逻辑

2.1 前置条件, 源代码

在这里插入图片描述

2.2 创建bean, 源代码

在这里插入图片描述



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

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

相关文章

Blender教程(基础)-顶点挤出扩展-19

shiftA新建一个平面 编辑模式下,选中三个点,按X弹出按顶点删除 删除完成只剩下一个顶点 选中顶点按字母E在X轴挤出,按字母E在Y轴挤出 选中三个顶点按字母E延Z轴挤出 新建平面,按数字7到顶视图 选中顶点按E延X轴挤出 …

通用的网站炫酷底部美化代码分享

网站炫酷底部美化代码介绍 这段代码采用了最新的前端技术,确保在各种浏览器和设备上都能完美展现。它包含响应式设计元素,这意味着无论用户是通过电脑、平板还是手机访问您的网站,底部都能呈现出最佳的效果。 此外,我们还特别注…

单片机——ISP下载、ICP下载、IAP下载

文章目录 ISPICPIAP ISP 在线系统编程,使用引导程序加上外围UART/SPI接口烧录 其本质是将程序的hex文件烧录到板子里的过程 可以使用flymcu这个软件 System memory是STM32在出厂时,由ST在这个区域内部预置了一段BootLoader, 也就是我们常说…

机器人运动学林沛群——变换矩阵

对于仅有移动,由上图可知: A P B P A P B o r g ^AP^BP^AP_{B org} APBPAPBorg​ 对于仅有转动,可得: A P B A R B P ^AP^A_BR^BP APBA​RBP 将转动与移动混合后,可得: 一个例子 在向量中&#xff…

猫头虎分享已解决Bug || TypeError: this.$store.commit is not a function in Vue

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …

c语言中的模拟多态性

在C语言中模拟多态性 多态性是面向对象编程中的一个核心概念,它允许我们通过一个共同的接口来操作不同的数据类型。虽然C语言是一种过程式语言,本身不直接支持面向对象的特性,如继承、封装和多态,但我们可以通过一些技巧来模拟这些…

@RequestBody、@RequestParam、@RequestPart使用方式和使用场景

RequestBody和RequestParam和RequestPart使用方式和使用场景 1.RequestBody2.RequestParam3.RequestPart 1.RequestBody 使用此注解接收参数时,适用于请求体格式为 application/json,只能用对象接收 2.RequestParam 接收的参数是来自HTTP 请求体 或 请…

关于 Ant Design 的 Upload 组件使用 action 自动上传出现跨域问题的解决

问题描述 使用 Ant Design 的 Upload 组件时,可以通过 action 属性指定上传地址实现选择文件自动上传。但在我选择文件上传后浏览器控制台一直出现跨域错误。关键我已经在后端处理了跨域,还是一直会出现跨域错误。而且其它请求都可以正常处理跨域&#…

微软.NET6开发的C#特性——接口和属性

我是荔园微风,作为一名在IT界整整25年的老兵,看到不少初学者在学习编程语言的过程中如此的痛苦,我决定做点什么,下面我就重点讲讲微软.NET6开发人员需要知道的C#特性。 C#经历了多年发展, 进行了多次重大创新&#xf…

如何利用IP定位技术锁定网络攻击者

在当今高度互联的数字世界中,网络安全威胁日益猖獗。为了维护网络空间的安全与稳定,追踪并锁定网络攻击者成为了关键一环。而IP定位技术,作为一种重要的追踪手段,正发挥着越来越重要的作用。 IP定位技术,简而言之&…

软考 系统分析师系列知识点之信息系统战略规划方法(3)

接前一篇文章:软考 系统分析师系列知识点之信息系统战略规划方法(2) 所属章节: 第7章. 企业信息化战略与实施 第4节. 信息系统战略规划方法 7.4.1 企业系统规划法 7. 确定管理部门对系统的要求 BSP的出发点是管理部门对系统的要…

机器学习--K-近邻算法常见的几种距离算法详解

文章目录 距离度量1 欧式距离(Euclidean Distance)2 曼哈顿距离(Manhattan Distance)3 切比雪夫距离 (Chebyshev Distance)4 闵可夫斯基距离(Minkowski Distance)5 标准化欧氏距离 (Standardized EuclideanDistance)6 余弦距离(Cosine Distance)7 汉明距离(Hamming Distance)【…

后端创建订单

package com.java1234.entity;import io.jsonwebtoken.Claims;/*** jwt验证信息* author java1234_小锋* site www.java1234.com* company Java知识分享网* create 2019-08-13 上午 10:00*/ public class CheckResult {private int errCode;private boolean success;private Cl…

欢迎来到操作系统的世界

🌞欢迎来到操作系统的世界 🌈博客主页:卿云阁 💌欢迎关注🎉点赞👍收藏⭐️留言📝 🌟本文由卿云阁原创! 🙏作者水平很有限,如果发现错误&#xff…

Springboot简单设计两级缓存

两级缓存相比单纯使用远程缓存,具有什么优势呢? 本地缓存基于本地环境的内存,访问速度非常快,对于一些变更频率低、实时性要求低的数据,可以放在本地缓存中,提升访问速度 使用本地缓存能够减少和Redis类的远…

Redis主从复制原理工作流程和常见问题

Redis主从复制原理 相信很多小伙伴都已经配置过主从复制,但是对于redis主从复制的工作流程和常见问题很多都没有深入的了解。咔咔这次用时俩天时间给大家整理一份redis主从复制的全部知识点。本文实现所需环境 centos7.0 redis4.0 一、什么是Redis主从复制&#x…

DC-7靶机渗透详细流程

信息收集: 1.存活扫描: 由于靶机和kali都是nat的网卡,都在一个网段,我们用arp-scan会快一点: arp-scan arp-scan -I eth0 -l └─# arp-scan -I eth0 -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:dd:ee:6…

《学成在线》微服务实战项目实操笔记系列(P1~P83)【上】

史上最详细《学成在线》项目实操笔记系列【上】,跟视频的每一P对应,全系列12万字,涵盖详细步骤与问题的解决方案。如果你操作到某一步卡壳,参考这篇,相信会带给你极大启发。 一、前期准备 1.1 项目介绍 P2 To C面向…

js手写Promise(上)

目录 构造函数resolve与reject状态改变状态改变后就无法再次改变 代码优化回调函数中抛出错误 thenonFulfilled和onRejected的调用时机异步then多个then 如果是不知道或者对Promise不熟悉的铁铁可以先看我这篇文章 Promise 构造函数 在最开始,我们先不去考虑Promi…

Get Ready!这些 ALVA 应用即将上线 Vision Pro!

日前,苹果 Vision Pro 正式在美国上市,应用商店首批上线超过 600 款应用程序,出色的显示效果和交互体验,为更多应用提供了全新打开方式。 *图源:Apple 对此,作为全球领先的空间计算技术平台供应商&#xff…