4.13---Spring框架之Spring的启动流程和Springboot的启动流程--(复习版本)

news/2024/6/16 20:25:17 标签: spring, spring boot, java

Spring的启动流程可以归纳为三个步骤:

1、初始化Spring容器,注册内置的BeanPostProcessor的BeanDefinition到容器中
2、将配置类的BeanDefinition注册到容器中
3、调用refresh()方法刷新容器

Spring的启动流程和原理:
首先,Spring通过读取配置文件,解析配置信息,生成相应的 BeanDefinition,并注册到 BeanFactory 中。
接着,Spring根据 BeanDefinition 创建和初始化 Bean,并进行依赖注入。
最后,Spring触发 BeanPostProcessor 和 BeanFactoryPostProcessor 进行一些自定义的处理和扩展操作。
整个过程中,Spring会涉及到类加载、反射、AOP、事件管理等技术,从而实现了高度灵活的IoC和AOP机制。

Spring Boot 的启动流程主要分为三个阶段:

第一个阶段是启动类的加载和执行
第二个阶段是 Spring Boot 的自动配置
第三个阶段是 Spring Boot 应用的启动和运行。

1.第一个阶段,Spring Boot 启动类会被加载进 JVM 中,并调用其 main() 方法。在该方法中,会调用 SpringApplication.run() 方法来启动 Spring Boot 应用。
这个方法中会创建一个 Spring 应用上下文,并加载所有的自动配置类。

2.第二个阶段是 Spring Boot 的自动配置。
Spring Boot 通过在类路径下扫描 META-INF/spring.factories 文件来自动发现所有的自动配置类,并根据其顺序进行自动配置。
在这一阶段中,Spring Boot 会根据配置文件中的设置,自动装配数据源、事务管理器、Web 相关组件等。

3.在第三个阶段,Spring Boot 应用启动完毕,并开始运行。
在这个阶段,Spring Boot 会扫描所有的 Bean,并根据依赖注入的规则完成依赖注入。
最终,Spring Boot 会启动 Web 容器,并将 Web 应用部署到容器中,等待请求的到来。


http://www.niftyadmin.cn/n/216096.html

相关文章

k8s常用命令,创建命名空间以及k8s发布容器化应用操作

k8s常用命令 kubectl get nodes 查看集群信息 kubectl delete node k8s-node1 删除节点 kubectl get service 查看service的信息 kubectl get pods --all-namespaces 查看所有名称空间内的资源 kubectl get pod,svc -n kube-system 同时查看多种资源信息 kubectl cluster…

关于python学习的一些基础知识我想对大家普及

常说的变量,什么是变量,从字面意思上理解变量就是,值可以改变的量,在面向对象中,你可把它称为对象,将类创建的实例对象赋值给它 a 5 a 6 a 7 我们可以给将多个值赋值给a,或者称为a 指向多…

换电脑 NoteExpress 数据备份迁移

前言 主要操作是跟着这篇博客做的:NoteExpress数据库备份和转移。但也有一些不一样的地方 旧电脑NoteExpress(NE)版本3.7,新电脑版本3.8 旧电脑 导出配置文件 桌面找到图标,打开位置,点击配置备份(绿色的图标&#…

面向对象程序设计

OOP 【面向对象程序设计】(OOP)与【面向过程程序设计】在思维方式上存在着很大的差别。【面向过程程序设计】中,算法是第一位的,数据结构是第二位的,这就明确地表述了程序员的工作方式。首先要确定如何操作数据&#…

Java笔记_10(项目阶段----拼图游戏)

项目阶段页面搭建创建窗口界面设置和菜单搭建创建菜单添加图片图片对象打乱图片用一维数组添加值到二维数组中事件美化页面移动图片查看完整图片,作弊器,判断胜利计步器和菜单业务的实现弹窗创建更换图片和登陆页面的建立表单所有源码的实现游戏规则工具…

半个月狂飙1000亿,ChatGPT概念股凭什么?

ChatGPT 掀起了AI股历史上最疯狂的一轮市值狂飙。 自春节后至今,ChatGPT概念股开始了暴走模式,短短半月时间,海天瑞声、开普云等ChatGPT概念股市值累计增加了近1400亿。 如此的爆炸效应,得益于ChatGPT所展现出商业化落地的巨大潜…

Python爬虫之多线程加快爬取速度

之前我们学习了动态翻页我们实现了网页的动态的分页,此时我们可以爬取所有的公开信息了,经过几十个小时的不懈努力,一共获取了 16万 条数据,但是软件的效率实在是有点低了,看了下获取 10 万条数据的时间超过了 56 个小…

敏捷开发模式下如何用 PingCode 这类工具进行版本发布管理

在软件团队工作中,版本发布要达到好的发布效果,需要在版本发布前做好版本发布的规划,并对发布流程和进度进行管理 准备工作: 您已经创建了一个 PingCode 帐户【快速注册入口】 您创建了一个 PingCode Scrum或 Kanban 项目 您的…