SpringBoot源码透彻解析—bean生命周期

news2024/11/29 5:43:14

先跟一段debug再看总结:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1 创建实例

  1. InstantiationAwareBeanPostProcessor.postProcessBeforeInstantiation(自定义一个对象或者代理对象)
  2. createBeanInstance(创建实例)
  3. MergedBeanDefinitionPostProcessor.postProcessMergedBeanDefinition(发现属性:@Value和@Autowired注解)

2 填充属性

  1. InstantiationAwareBeanPostProcessor.postProcessAfterInstantiation(实例化后置处理器,最后一次机会修改beanDefinitinon)
  2. InstantiationAwareBeanPostProcessor.postProcessProperties(填充属性1:@Value和@Autowired注解)
  3. applyPropertyValues(属性填充2:beanDefinition里的propertyValues有值时)

3 初始化

  1. invokeAwareMethods:回调aware接口,注入spirng核心组件或上下文对象
  2. BeanPostProcessor.postProcessBeforeInitialization: @PostConstruct方法调用
  3. invokeInitMethods: 初始化
  4. BeanPostProcessor.postProcessAfterInitialization: 代理对象创建(AOP核心)

① 3-5:是一对,一个探测,一个填充;

AutowiredAnnotationBeanPostProcessor 针对的是@Value和@Autowired属性的探测和填充;
CommonAnnotationBeanPostProcessor 针对的是@Resource和@PostConstruct属性的探测和填充
探测都是同一个方法,但是,@Resource属性的填充是CommonAnnotationBeanPostProcessor.postProcessProperties

② @PostConstruct方法的调用是:CommonAnnotationBeanPostProcessor.postProcessBeforeInitialization)
③ 9:bean实现InitializingBean接口,回调afterPropertiesSet方法。
④ 10:AnnotationAwareAspectJAutoProxyCreator 创建代理对象。

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

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

相关文章

Selenium 常用元素操作

常用浏览器操作 1、初始化浏览器会话 from selenium import webdrive 初始化浏览器会话--谷歌 driverwebdrive.Chrome() 2、浏览器最大化操作 driverwebdriver.Chrome() 3、设置浏览器窗口大小 driver.set_window_size(500,780) 4、关闭浏览器 driver.quit() 常用页面…

Python的网络编程一篇学透,使用Socket打开新世界

目录 1.网络概念 2.网络通信过程 2.1.TCP/IP 2.2.网络协议栈架构 3.TCP/IP介绍 3.1.ip地址 3.2.端口号 3.3.域名 4.Python网络编程 4.1.TCP/IP 4.2.socket的概念 4.3.Socket类型 4.4.Socket函数 4.5.Socket编程思想 5.客户端与服务器 5.1.tcp客户端 6.网络调试…

数据库概论

目录 什么是数据库数据库的概念模型层次模型网状模型关系模型 为什么要使用关系型数据库完整性约束结构化查询语言SQL基本语句 什么是数据库 考虑这些问题:当用户使用软件计算时,如果想要保存计算结果或者想选择不同的题目,是否要保存、读取…

C#高级--IO详解

零、文章目录 IO详解 1、IO是什么 (1)IO是什么 IO是输入/输出的缩写,即Input/Output。在计算机领域,IO通常指数据在内部存储器和外部存储器或其他周边设备之间的输入和输出。输入和输出是信息处理系统(例如计算器&…

Spring Cloud应用- Eureka原理、搭建

初期对Spring Cloud的学习以应用搭建为主,所以内容不会太枯燥。 一直以来,自以为Spring全家桶的学习中,Spring framework是基础中的基础,部分内容也还是必须要读源码去理解底层原理,SpringMVC、SpringBoot&#xff0c…

基于PESdk和EasyModbus实现录波控制逻辑和数据传输

文章目录 0. 概要1. 录波功能简介1.1 功能框架1.2 录波控制逻辑1.3 手动录波数据传输流程1.4 故障录波传输流程 2 C语言应用程序接口(API)2.1 EasyModbus接口2.2 PESdk 3 录波功能的实现3.1 功能码定义3.1.1 公共功能码3.1.2 用户自定义功能码3.1.3 保留…

维修服务预约小程序的效果如何

生活服务中维修项目绝对是需求量很高的,如常见的保洁、管道疏通、数码维修、安装、便民服务等,可以说每天都有生意,而对相关维修店企业来说,如何获得更多生意很重要。 接下来让我们看看通过【雨科】平台制作维修服务预约小程序能…

XX棋牌架设指南

一、环境要求: 1.服务器要求:WINDOWS2008或更高版本。 2.数据库要求:MS SQL SERVER 2008 R2或更高版本。 3.服务器需要安装IIS。 二、游戏部署步骤: 1.解压文件至服务器数据盘,此处以D盘为例进行说明。 2. 目录说…

树结构及其算法-用链表来实现二叉树

目录 树结构及其算法-用链表来实现二叉树 C代码 树结构及其算法-用链表来实现二叉树 以链表实现二叉树就是使用链表来存储二叉树,也就是运用动态分配内存和指针的方式来建立二叉树。 使用链表来表示二叉树的好处是节点的增加与删除操作相当容易,缺点…

MATLAB野外观测站生态气象数据处理分析实践应用

1.基于MATLAB语言 2.以实践案例为主,提供所有代码 3.原理与操作结合 4.布置作业,答疑与拓展 示意图: 以野外观测站高频时序生态气象数据为例,基于MATLAB开展上机操作: 1.不同生态气象要素文件的数据读写与批处理实现 …

Ubuntu18.04系统镜像制作

安装使用systemback # 添加源 sudo add-apt-repository --remove ppa:nemh/systemback sudo add-apt-repository "deb http://ppa.launchpad.net/nemh/systemback/ubuntu xenial main"# 下载 sudo apt update sudo apt install systemback打开systemback,点击创建li…

加州大学提出 PromptAgent 帮忙我们高效的使用 ChatGPT

本心、输入输出、结果 文章目录 加州大学提出 PromptAgent 帮忙我们高效的使用 ChatGPT前言加州大学团队提出了可以自动优化 Prompt 的框架 —— PromptAgentPromptAgent 原理论文 实例介绍PromptAgent 框架设计PromptAgent 的策略优化过过程PromptAgent 的结果是否具备普适性弘…

[Docker]四.Docker部署nodejs项目,部署Mysql,部署Redis,部署Mongodb

一.部署nodejs项目,映射端口,挂载数据卷 可以到https://hub.docker.com/去搜索node镜像,然后下载,也可以直接通过docker pull node下载镜像,然后用这个node镜像启动容器node,这样系统就集成了node服务了,在这里挂载www/node目录到容器中,并指定端口映射,运行nodejs程序,安装npm…

【Tricks】PC端微信输入时,文本出现右对齐情况怎么恢复

应该是摁到某个快捷键,于是光标就变成如下图所示的样子: 如果再输入字符,则字符就会变成下图所示的样子(对齐输入框右侧): 解决办法:ctrl J 解决办法:ctrl J 解决办法&#xff1…

transformers-AutoClass

https://huggingface.co/docs/transformers/main/en/autoclass_tutorialhttps://huggingface.co/docs/transformers/main/en/autoclass_tutorialAutoClass可以自动推断和加载给定checkpoint的正确架构。 对于文本,使用Tokenizer将文本转换为token序列,创…

MTSC2023|深圳大会,你关心的技术话题都在这里

MTSC中国互联网测试开发大会 (Make Tester Super Cool, 简称MTSC) 是由国内知名的测试技术社区TesterHome发起的软件测试行业技术会议,大会以“软件质量保障体系和测试研发技术交流”为主要目的,旨在为行业搭建一个深入探讨和交流…

【Linux】Nginx安装使用负载均衡及动静分离(前后端项目部署),前端项目打包

一、Nginx导言 1、引言 Nginx 是一款高性能的 Web 服务器和反向代理服务器,也可以充当负载均衡器、HTTP 缓存和安全防护设备。它的特点是内存占用小、稳定性高、并发性强、易于扩展,因此在互联网领域得到了广泛的使用。 总结出以下三点: 负载均衡&#x…

作物模型--土壤数据制备过程

作物模型–土壤数据制备过程 首先打开FAO网站 下载下面这两个 Arcgis打开.bil文件 .mdb文件在access中转成.xls格式 Arcgis中对.bil文件定义投影

进口跨境商城源码的技术要点和优化策略

随着全球电子商务的快速发展,进口跨境商城已成为一种新型的商业模式。为了满足消费者日益增长的需求,提高商城的运营效率和用户体验,对进口跨境商城源码进行技术优化显得尤为重要。本文将探讨进口跨境商城源码的技术要点和优化策略。 一、背景…

Prometheus+Node_exporter+Grafana实现监控主机

PrometheusNode_exporterGrafana实现监控主机 如果没有安装相关的配置,首先要进行安装配置,环境是基于Linux,虚拟机的相关环境配置在文末给出,现在先讲解PrometheusNode_exporterGrafana的安装和使用。 一.Prometheus安装 虽然…