Spring启动流程

news2024/11/25 0:26:11

Spring启动流程

按Bean状态描述:

  1. 创建Bean工厂
  2. 对Bean工厂后置处理
  3. 通过@Component和@Import扫描BeanDefinition,加入到Bean工厂
  4. 注册Bean后置处理器,用于拦截Bean创建
  5. 实例化
  6. 填充属性
  7. 初始化
    • 调用aware方法
    • BeanPostProcessor实例化前执行
    • 调用初始化方法
    • BeanPostProcessor实例化后执行
  8. 将Bean放到Bean工厂里

按方法描述:

准备阶段:

  • this()
    • 调用父类构造方法,获取Bean工厂,默认DefaultListableBeanFactory
    • 注册5个内置BeanDefinition
    • 设置哪些类生成的对象可以被Spring托管,默认是被@Component标记的类
    • 判断被Conditional注解标记的类能否被Spring托管
  • register(componentClasses) 注册componentClasses的BeanDefinition

刷新阶段refresh():

  • prepareRefresh 准备上下文
  • obtainFreshBeanFactory 获取Bean工厂
  • prepareBeanFactory Bean工厂初始化
  • postProcessBeanFactory 后置处理Bean工厂,空方法,扩展点
  • invokeBeanFactoryPostProcessors 执行BeanFactory的后置处理器。在这里
    • 扫描@Component那些BeanDefinition
    • 执行@Import的逻辑
  • registerBeanPostProcessors 注册Bean的后置处理器,用于拦截Bean的创建
  • initMessageSource 初始化消息源
  • initApplicationEventMulticaster 初始化事件派发器,用来发布事件
  • onRefresh 用来初始化一些特殊的Bean,目前默认是空方法,未实现
  • registerListeners 注册监听器
  • finishBeanFactoryInitialization 初始化所有剩余的单实例Bean(没有使用懒加载的Bean).整个Spring IOC的核心
  • finishRefresh 发布事件
    请添加图片描述

三级缓存

请添加图片描述

准备创建Bean

请添加图片描述

创建Bean的过程

请添加图片描述

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

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

相关文章

【java进阶01:final关键字】final修饰的变量只能赋一次值

目录 final修饰的类无法继承。 final修饰的引用一旦指向某个对象,则不能再指向其他对象,但该引用指向的对象内部的数据是可以修改的。​编辑 final修饰的实例变量必须手动初始化,因为系统不会赋默认值,强制手动赋值&#xff0c…

【router-view】切换组件 深刻理解用法 vue的设计思想

之前学的时候没学明白,导致写项目有些功能的实现上走了歪路。 今天询问了学长,更加深刻的理解的Vue的设计思想。 因为vue是单页面应用,所以学会用router-view来切换频繁变化的地方的组件是非常重要的。 之前,我的一个主页组件由…

Xshell远程连接配置 Ubuntu 18.04.6 + Anaconda + CUDA + Cudnn + Pytorch(GPU+CPU)

Xshell远程连接进行Ubuntu的Pytorch配置写在最前面参考Xshell常用命令Ubantu检查系统的各项配置查看ubuntu系统的版本信息查看Linux的内核版本和系统是多少位的Ubuntu版本各种验证禁用nouveau安装显卡驱动卸载显卡驱动安装显卡驱动加入PPA,然后更新库方法一&#xf…

maven离线模式及设置

maven离线模式及设置 maven离线模式使用场景? 遇到的问题: 最近遇到个项目支持,他在打jar包的时候,总是去网上下载 maven依赖,不去找我本地仓库的,就比较头大,原因不明 现在需求:就…

SpringBoot 玩一玩代码混淆,防止反编译代码泄露

编译 简单就是把代码跑一哈,然后我们的代码 .java文件 就被编译成了 .class 文件 反编译 就是针对编译生成的 jar/war 包 里面的 .class 文件 逆向还原回来,可以看到你的代码写的啥。 比较常用的反编译工具 JD-GUI ,直接把编译好的jar丢进…

java项目-第144期ssm农产品供销服务系统-java毕业设计_计算机毕业设计

java项目-第144期ssm农产品供销服务系统-java毕业设计_计算机毕业设计 【源码请到资源专栏下载】 今天分享的项目是《ssm农产品供销服务系统》 该项目分为2个角色,管理员和用户。 用户可以浏览前台,包含功能有: 首页、农产品、农产品资讯、我的、跳转到后…

JavaScript DOM中获取元素、事件基础、操作元素、节点操作

目录 JavaScript事件三要素 常见的事件​编辑 2、执行事件的步骤: 1. 获取元素 1.1 方式 1.1.1 根据ID获取 1.1.2 根据标签名获取 1.1.3 通过html5新增的方法获取 1.1.4 特殊元素获取 2. 事件基础 2.1 事件三要素 2.1.1 事件源 2.1.2 事件类型 2.1.3…

如何使用Spring Security控制会话

在 Spring 安全教程的这篇文章中,我们将讨论Spring 安全会话管理。我们将讨论 Spring 安全性的独特功能,这有助于我们高效和安全的会话管理。 春季安全会议 本文将讨论安全会话管理以及 spring 安全性如何帮助我们控制 HTTP 会话。Spring 安全性使用以…

1.4_29 Axure RP 9 for mac 高保真原型图 - 案例28【中继器-后台管理系统6】功能-原位修改数据

相关链接 目录Axure中文学习网AxureShopAxureShop-QA 案例目标1. 了解使用中继器,弹窗修改数据的实现方式 一、成品效果 Axure Cloud 案例28【中继器 - 后台管理系统6】功能-原位修改数据 版本更新一、修改功能   1.1 文本框:点击数据位置&#xff…

InternImage

终于有对抗Transformer 的了~~ 来自浦江实验室、清华等机构的研究人员提出了一种新的基于卷积的基础模型,称为 InternImage,与基于 Transformer 的网络不同,InternImage 以可变形卷积作为核心算子,使模型不仅具有检测和分割等下游…

MySQL删除表数据总结(DELETE、TRUNCATE、DROP)

(1)当我们不再需要该表时,使用DROP,会连表一起删掉,无法找回。速度很快。 DROP TABLE web_tbl_search;(2)保留表结构,只删除表数据,使用TRUNCATE,数据删除后…

【unCloud】在使用uni-admin时遇到的问题(原uniCloud-admin)

目录一、前言二、遇到的几个小问题问题一:可登录应用解决方法、步骤一、前言 这是我跟着官方的教学视频学习时遇到的一切小问题,由于我是初学,也没什么很多Vue一类的基础,所以学起来可能才会觉得这些是问题,但是也暂做…

得物视频编辑工具优化全指南

一、背景介绍 随着5G网络的推广和网络带宽的提升,视频成为互联网用户主要的消费载体,用户通过短视频来分享和浏览信息。由此视频的编辑功能越来越重要、越来越普遍。视频编辑的APP也如雨后春笋般涌现。 更好地推动得物App社区业务的发展,得…

测试日常工作中需要具备哪些知识和能力,在需求评审时需要考虑哪些方面,在技术方面评审时需要考虑哪些方面,从什么方面进行设计测试用例

前几天同事分享了一波作为测试需要具备哪些能力,测试用例需要从哪些方面进行设计,我把他分享的内容拷贝了一波,作为以后在测试过程中的参考。 首先需求评审、技术方案评审、测试用例评审三者的关系 一开始,我每次设计测试用例都是…

操作系统 | 实验八 文件管理

一、实验目的 掌握文件的存取方法;掌握文件的逻辑结构和物理结构;掌握存储空间的分配和回收;掌握磁盘管理与调度。 二、实验内容 用程序模拟磁盘的调度过程,并计算各磁盘调度算法包括先来先服务算法、最短寻道时间优先算法、扫…

【大根堆 Java】使用优先队列+HashMap 解决前 K 个高频元素问题

一、题目描述 给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。 示例 二、思路 本题我们主要完成两个步骤: 统计出每个元素出现的次数找出出现次数最多的前 K 个元素 对第一个步骤&#xf…

IPWorks S/MIME Delphi Edition

IPWorks S/MIME是一套用于电子邮件加密和文档安全的综合组件。IPWorks S/MIME使用公钥密码标准(PKCS)实现加密和解密的S/MIME标准。 IPWorks S/MIME包括通用的S/MIME组件以及支持S/MIME的IPWorks POP3、IMAP、SMTP、FileMailer和HTMLMailer组件版本。还…

【MMDet】提交PR的学习笔记

官方文档 关于如何向MMDet提交PR,请参考mmcv的文档《拉取请求 — mmcv 1.6.1 文档》 1. Fork最新代码库 当第一次提PR时,需要复刻OpenMMLab代码库,点击 GitHub 页面右上角的Fork按钮即可 将复刻的代码库克隆到本地 git clone fork_mmdet…

trunc函数与truncate函数的一点区别

Oracle的trunc函数与truncate函数都可以对数值进行截取操作 -- 首先看对数值进行截取操作 SELECT TRUNCATE(122.123, 4) from dual; # 122.123 SELECT TRUNCATE(122.123, 3) from dual; # 122.123 SELECT TRUNCATE(122.123, 2) from dual; # 122.12 SELECT TRUNCATE(122.123, 1…

vue3中使用element plus

1、先安装node.js node.js的安装_西瓜君的代码的博客-CSDN博客 2、安装vue-cli vue-cli的安装_西瓜君的代码的博客-CSDN博客 3、安装element-plus Element UI 安装_西瓜君的代码的博客-CSDN博客 4、idea中使用vue3 在idea中使用vue3_西瓜君的代码的博客-CSDN博客 5、 加入 impo…