当前位置: 首页 > article >正文

Spring启动流程

Spring启动流程
Spring的启动流程主要包括以下几个步骤:
加载配置文件:Spring应用程序的启动从加载配置文件开始,这些配置文件可以是XML文件、JavaConfig类或注解配置。这些文件定义了bean及其依赖关系。
实例化Bean容器:解析配置文件后,Spring会创建一个Bean容器实例,这个容器负责管理应用程序中的bean,包括解析配置信息、创建和初始化bean。
注册Bean:Bean容器会遍历配置文件,解析每个元素,并注册对应的bean定义。
依赖注入:Spring会自动处理bean之间的依赖关系,通过自动装配机制(如setter注入、构造函数注入或字段注入)将依赖注入到bean中。
初始化Bean:在所有bean都注册并解决依赖关系后,Bean容器会按照配置文件的顺序(或通过其他策略)初始化这些bean。
配置事件发布:在bean初始化过程中,Spring会发布一系列事件,允许开发者在Spring容器初始化或运行时进行自定义操作。
应用上下文启动:一旦所有bean都已初始化,并且相关的配置事件已发布,Spring容器(即应用上下文)就可以宣布启动完成,应用程序准备好接收请求或执行其他任务。
Spring Boot启动流程
Spring Boot的启动流程更加自动化和简化,主要包括以下几个步骤:
加载启动类:Spring Boot应用的入口是一个被@SpringBootApplication注解标记的启动类。
创建SpringApplication实例:通过new关键字创建SpringApplication实例,这是Spring Boot应用的核心类。
分析运行参数:SpringApplication会分析运行时的参数,如命令行参数、系统环境变量等。
设置启动默认值:根据分析得到的参数设置一些默认值,如主程序类、是否使用web环境等。
准备ApplicationContext:根据应用类型(Web还是非Web)创建相应的ApplicationContext对象,并进行一些初始化操作。
加载外部配置文件:加载指定的外部配置文件(如application.properties或application.yml),并将其转化为内部的Environment对象。
执行自定义逻辑:如果存在自定义的ApplicationContextInitializer和ApplicationListener,SpringApplication会按顺序执行它们的逻辑。
执行run方法:调用SpringApplication的run方法,启动Spring Boot应用。
启动容器:根据配置信息创建并启动相应的Spring容器,包括Spring MVC、数据库连接池等。
发布应用启动事件:发布ApplicationStartedEvent,通知其他监听器应用已经启动。
运行应用:Spring Boot应用启动后,根据配置的Web服务器(如Tomcat)开始监听和处理HTTP请求。
这两个流程展示了Spring和Spring Boot在启动时的不同侧重点,Spring Boot通过自动配置和简化步骤,大大提升了开发效率和应用的启动速度。


http://www.kler.cn/a/291917.html

相关文章:

  • Linux:进程的优先级 进程切换
  • 【AtCoder】Beginner Contest 380-C.Move Segment
  • React中组件通信的几种方式
  • 用 Python 从零开始创建神经网络(五):损失函数(Loss Functions)计算网络误差
  • centos7 升级openssl 与升级openssh 安装卸载 telnet-server
  • 【日常记录-Git】git log
  • 【C-实践】一对一的网络通信(tcp+select)
  • 在Python中,文本查找和替换的常用操作
  • 鸿蒙(API 12 Beta6版)【ArkGraphics 3D场景搭建以及管理】方舟3D图形
  • 如何打造基于Java SpringBoot和Vue的医院门诊智能预约平台?四步实现高效就医流程,整合MySQL数据库,优化用户体验。
  • 【实战篇】Mcu配置
  • 【js】数组去重
  • Day-04-QFile打开文件的两种方式
  • 计算机毕业设计 | SpringBoot+vue问卷调查系统 社会调研平台(附源码)
  • 【个人思考】 Java为什么解释执行时不直接解释源码?
  • 前端基础面试题·第二篇——CSS(其一)
  • 阶段二 - 小程序反编译及调试
  • 哪款宠物空气净化器能更好的清理浮毛?希喂、352、IAM测评分享
  • MATLAB绘图基础4:MATLAB函数
  • WEB服务器-Tomcat
  • PhpStorm中配置调试功能
  • golang学习笔记02——gin框架及基本原理
  • 【生日视频制作】星空木屋霓虹灯爱心形照片AE模板修改文字软件生成器教程特效素材【AE模板】
  • 2024国赛数学建模A题思路模型
  • 学习记录:js算法(二十一):字符串的排列、替换后的最长重复字符
  • C# 去掉字符串最后一个字符的5种方法