spring bean 生命周期--AbstractAutowireCapableBeanFactory

1、在spring刷新容器加载BeanFactory,完成初始化回调

1、加载BeanFactory会初始化org.springframework.beans.factory.support.DefaultListableBeanFactory继承了AbstractAutowireCapableBeanFactory,这个父类就是生命周期的核心,实例化、初始化、前后增强以及销毁Bean,覆盖了整个生命周期。

public class DefaultListableBeanFactory extends AbstractAutowireCapableBeanFactoryimplements ConfigurableListableBeanFactory, BeanDefinitionRegistry, Serializable

1、加载容器BeanFacotry

org.springframework.context.support.AbstractApplicationContext#obtainFreshBeanFactory==>

org.springframework.context.support.AbstractRefreshableApplicationContext#refreshBeanFactory

2、spring刷新容器正式调用初始化的地方。

org.springframework.context.support.AbstractApplicationContext#finishBeanFactoryInitialization

org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory#doCreateBean

核心类:

org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory

1、Bean实例化。

org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory#createBeanInstance

2、填充Bean属性值。

org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory#populateBean

3、拦截并且调用Aware方法。

org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory#invokeAwareMethods

4、初始化前置增强处理。aop前置增强

org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory#applyBeanPostProcessorsBeforeInitialization

5、完成初始化init-methods,包括完成属性级别的回调(afterPropertiesSet)和自定义nit-methods的初始化。

org.springframework.beans.factory.InitializingBean#afterPropertiesSet

org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory#invokeCustomInitMethod

6、初始化后置增强处理。aop后置增强

org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory#applyBeanPostProcessorsAfterInitialization

7、注册销毁的Bean,如果是单例,通过DestructionAwareBeanPostProcessors来销毁bean,如果不是单例,则使用回调来销毁bean。

org.springframework.beans.factory.support.AbstractBeanFactory#registerDisposableBeanIfNecessary

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

v-if与v-show

​🌈个人主页:前端青山 🔥系列专栏:Vue篇 🔖人终将被年少不可得之物困其一生 依旧青山,本期给大家带来vue篇专栏内容:v-if与v-show 目录 v-if与v-show区别 一、v-show与v-if的共同点 二、v-show与v-if的区别 三、v…

串行通信中的同步方式(Synchronous)与异步方式(Asynchronous)stty -F设置波特率

文章目录 串行通信中的同步方式与异步方式概述同步串行通信基本原理数据帧结构 技术挑战1. 时钟同步:确保发送方和接收方时钟的同步是同步通信中的一个关键技术挑战。1. 共享的时钟信号a. 独立的时钟线b. 无线时钟同步 2. 编码方式3. 帧同步4. PLL(相位锁…

excel-gen.js 导出excel 功能

目录 概要 整体架构流程 html部分: js部分: json部分: 小结 概要 功能会使用到如下插件: jszip.min.js FileSaver.js jquery.min.js excel-gen.js highcharts.js exporting.js export_data.js 主要是highcharts图表…

小迪安全笔记(3)——基础入门3、基础入门4

文章目录 一、抓包&封包&协议&APP&小程序&PC应用&web应用二、30余种加密编码进制&web&数据库&系统&代理 一、抓包&封包&协议&APP&小程序&PC应用&web应用 APP&小程序&PC抓包HTTP/S数据——Charles、F…

提高视频性能的 5 种方法

摆脱共享托管计划 如果您的网站每月收到数千名访问者,那么现在是时候放弃许多企业家和小型企业开始使用的共享托管计划了。在启动网站时选择廉价的托管计划是可以理解的,因为此类计划通常足以使用一年或更长时间,而不会影响性能。 在共享托…

Docker 笔记(三)--容器

Docker 笔记(三)–容器 记录Docker 安装操作记录,便于查询。 参考 链接: Docker 入门到实战教程(三)镜像和容器链接: docker run中的-itd参数正确使用链接: docker官方文档链接: 阿里云Debian 镜像链接: Debian 全球镜像站链接: Debian/Ub…

游戏服务器怎么挑选细节与技巧深度解析

随着数字娱乐的迅速崛起,游戏不仅成为了全球数亿人的休闲爱好,同时也催生了一系列关于游戏体验优化的需求。游戏服务器作为游戏体验的核心支柱,其性能好坏直接影响到玩家的游戏体验。本文章旨在详细探讨游戏服务器的挑选技巧与注意事项&#…

Stable Diffusion进阶玩法说明

之前章节介绍了Stable Diffusion的入门,介绍了文生图的魅力,可以生成很多漂亮的照片,非常棒 传送门: Stable Diffusion新手村-我们一起完成AI绘画-CSDN博客 那我们今天就进一步讲讲这个Stable Diffusion还能做些什么, …

笔记55:长短期记忆网络 LSTM

本地笔记地址:D:\work_file\DeepLearning_Learning\03_个人笔记\3.循环神经网络\第9章:动手学深度学习~现代循环神经网络 a a a a a a a a a

【数据结构】链表的八种形态

🦄个人主页:修修修也 🎏所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 目录 链表的三大"性状" 一.带头链表和不带头链表 头指针与头结点的异同 头指针 头结点 二.循环链表和非循环链表 三.双向链表和单向链表 链表的八大形态 结语…

Linux之进程概念(一)

📘北尘_:个人主页 🌎个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上,不忘来时的初心 文章目录 一、冯诺依曼体系结构二、操作系统(Operator System)1、概念2、设计OS的目的3、定位4、如何理…

二百零五、Flume——数据流监控工具Ganglia单机版安装以及使用Ganglia监控Flume任务的数据流(附流程截图)

一、目的 Flume采集Kafka的数据流需要实时监控,这时就需要用到监控工具Ganglia 二、Ganglia简介 Ganglia 由 gmond、gmetad 和 gweb 三部分组成。 (一)第一部分:gmond gmond(Ganglia Monitoring Daemon)…

Postman启动问题:Could not open Postman

Postman启动问题:Could not open Postman 状态,在单击Postman之后一直在转圈圈,无法正常启动。 细心的朋友会发现,右下角 会经常出现防火墙关闭等提示信息,表示该程序,在向外链接。 Error Could not open…

Golang中读写CSV文件的全面指南

CSV(逗号分隔值)文件是一种常见的数据存储格式,广泛应用于数据导入、导出、分析和交换等场景。在Golang中,有许多库和工具可以帮助我们读取和写入CSV文件,使数据处理变得简单而高效。本文将深入探讨如何在Golang中使用…

基于单片机体温脉搏检测控制系统及源程序

一、系统方案 1、本设计采用51单片机作为主控器。 2、DS18B20传感器检测体温。 3、红外对接管采集心率值送到液晶1602显示。 二、硬件设计 原理图如下: 三、单片机软件设计 1、首先是系统初始化 /lcd1602初始化设置*/ void init_1602() { write_com(0x38); //显示…

苍穹外卖项目笔记(2)

1 Nginx 反向代理和负载均衡 1.1 概念 【Tips】可以看到前端请求地址和后端接口地址并不匹配,这里涉及到 nginx 反向代理 ,就是将前端发送的动态请求由 nginx 转发到后端服务器 使用 nginx 作反向代理的好处: 提高访问速度(在请…

系列一、堆里面的分区:Eden、From、To、老年代各自的特点

一、堆里面的分区:Eden、From、To、老年代各自的特点 堆是对象共享的区域,也是垃圾回收器主要工作的地方。主要分为新生区、养老区和元空间,而这三块地方中GC主要工作在新生区和养老区,其中新生区占1/3、养老区占2/3,新…

开源与闭源软件的辩论:对大模型技术发展的影响

目录 前言1 开源软件的优缺点1.1 开源软件的优点1.2 开源软件的缺点和挑战 2 闭源软件的优缺点2.1 闭源软件的优点2.2 闭源软件的缺点和挑战 3 大模型发展会走向哪一边结语 前言 近期,特斯拉CEO马斯克公开表示:OpenAI不该闭源,自家首款聊天机…

Qt http

文章目录 前言1. 定义的接口2.connect信号槽3. get4. get 下载文件5. post 总结 前言 /* 1.请求报文: 请求报文是由客户端发送给服务器,用于请求特定资源或执行特定操作。它由以下几个部分组成: 请求行:描述了请求的方法、目标资源…

海外代理IP如何找到靠谱的?

现在市面上有很多代理服务商,大家可以根据自己的需求选择一个适合自己业务的的IP代理服务商,现在也有一些免费的,但如果力求稳定安全,还是选择付费的。 这里提醒一句,在买代理IP时最好找这种可以免费试用的&#xff0…