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

怎么创办网站宁波seo公司推荐

怎么创办网站,宁波seo公司推荐,工业设计最好的公司,网站服务器与虚拟主机Spring Boot 的启动流程是一个复杂的自动化过程,核心围绕 SpringApplication 类的初始化与 run() 方法展开。以下是其关键步骤的详细分析: 一、初始化阶段:SpringApplication 实例化 当调用 SpringApplication.run(主类.class, args) 时&…

Spring Boot 的启动流程是一个复杂的自动化过程,核心围绕 SpringApplication 类的初始化与 run() 方法展开。以下是其关键步骤的详细分析:


一、初始化阶段:SpringApplication 实例化

当调用 SpringApplication.run(主类.class, args) 时,会先构造 SpringApplication 对象:

  1. 推断应用类型
    根据类路径判断是 Servlet(Web)、Reactive(响应式)还是普通应用,决定后续创建何种 ApplicationContext
  2. 加载 ApplicationContextInitializer
    通过 META-INF/spring.factories 加载所有 ApplicationContextInitializer 实现类,用于在 ApplicationContext 初始化前扩展配置。
  3. 加载 ApplicationListener
    同样通过 spring.factories 加载事件监听器,监听 Spring Boot 生命周期事件(如环境准备完成、上下文就绪等)。
  4. 识别主配置类
    通过堆栈分析找到包含 main 方法的类(即启动类),将其标记为主配置类。

二、执行阶段:run() 方法流程

run() 方法是 Spring Boot 启动的核心入口,流程如下:

1. 启动监听器通知
  • SpringApplicationRunListeners 发布 ApplicationStartingEvent
    通知所有 SpringApplicationRunListener 应用启动开始。
2. 准备环境(Environment)
  • 创建并配置环境对象
    根据应用类型创建 StandardServletEnvironment(Web)或 StandardEnvironment
  • 加载配置源
    加载命令行参数、application.propertiesapplication.yml、环境变量等。
  • 发布 ApplicationEnvironmentPreparedEvent
    通知监听器环境已准备好,此时可修改环境配置(如 EnvironmentPostProcessor 扩展)。
3. 打印 Banner
  • 根据 spring.banner.location 或默认规则加载 Banner,输出到控制台。
4. 创建 ApplicationContext
  • 根据应用类型实例化上下文
    • Servlet Web:AnnotationConfigServletWebServerApplicationContext
    • Reactive Web:AnnotationConfigReactiveWebServerApplicationContext
    • 非 Web:AnnotationConfigApplicationContext
5. 准备上下文
  • 设置环境、注册 Bean
    • Environment 绑定到上下文。
    • 注册 BeanNameGenerator、主配置类(启动类)等。
  • 调用 ApplicationContextInitializer
    执行所有初始化器(如设置上下文 ID、激活 Profile)。
6. 刷新上下文:refreshContext()

这是 Spring 容器的核心初始化过程(继承自 Spring Framework):

  • BeanFactory 准备
    加载 Bean 定义(如 @ComponentScan 扫描的类、@Import 导入的配置类)。
  • 执行 BeanFactoryPostProcessor
    例如 ConfigurationClassPostProcessor 解析 @Configuration 类。
  • 执行 BeanPostProcessor
    处理 Bean 初始化前后的逻辑(如 AOP 代理)。
  • 初始化消息源、事件广播器等
  • 启动内嵌 Web 服务器
    (仅 Web 应用)如 Tomcat、Netty,通过 ServletWebServerApplicationContext 启动。
  • 发布 ApplicationContextInitializedEvent
7. 后置处理
  • 发布 ApplicationPreparedEvent
    上下文已刷新,但未启动。
  • 注册关闭钩子
    确保 JVM 退出时优雅关闭 Spring 上下文。
  • 完成 Runner 执行
    调用所有 CommandLineRunnerApplicationRunnerrun() 方法。
  • 发布 ApplicationStartedEventApplicationReadyEvent
    分别表示应用已启动和完全就绪。

三、关键扩展点

  1. ApplicationContextInitializer
    自定义上下文初始化逻辑(如设置属性)。
  2. ApplicationListener
    监听事件(如 ApplicationEnvironmentPreparedEvent)实现动态配置。
  3. BeanFactoryPostProcessor
    修改 Bean 定义(如动态注册 Bean)。
  4. CommandLineRunner / ApplicationRunner
    在应用就绪后执行启动任务。

四、自动配置原理

  • @SpringBootApplication
    组合了 @SpringBootConfiguration@ComponentScan@EnableAutoConfiguration
  • @EnableAutoConfiguration
    通过 SpringFactoriesLoader 加载 META-INF/spring.factories 中定义的 AutoConfiguration 类。
  • 条件化装配
    使用 @ConditionalOnClass@ConditionalOnMissingBean 等条件注解按需装配 Bean。

流程图简化

启动类 -> SpringApplication构造 -> run()-> 发布StartingEvent -> 准备Environment -> 发布EnvironmentPreparedEvent -> 创建ApplicationContext -> 刷新Context(加载Bean、启动WebServer) -> 调用Runners -> 发布ReadyEvent

通过这一流程,Spring Boot 实现了零 XML 配置的快速启动,结合 Starter 机制和条件化自动配置,显著简化了 Spring 应用的搭建。


文章转载自:

http://tGvx2cFM.wptdg.cn
http://acSWS5YW.wptdg.cn
http://vWcuEHxn.wptdg.cn
http://8Ukw9kNx.wptdg.cn
http://OO3Ky3SS.wptdg.cn
http://vHuqa1BK.wptdg.cn
http://g9a6hEZE.wptdg.cn
http://OAG9ldWW.wptdg.cn
http://IoFKTNJr.wptdg.cn
http://ADaayhDC.wptdg.cn
http://aYMlfdoA.wptdg.cn
http://xeJyNb5k.wptdg.cn
http://eOsVdTBg.wptdg.cn
http://ZNBiFYM9.wptdg.cn
http://uyakfSCe.wptdg.cn
http://0I0QTGWG.wptdg.cn
http://2Cnbrl4H.wptdg.cn
http://RglxhPNo.wptdg.cn
http://CZ5z33vP.wptdg.cn
http://l7kx7xcn.wptdg.cn
http://WLZjdRBX.wptdg.cn
http://N3KbkW6P.wptdg.cn
http://CFZzehKT.wptdg.cn
http://VbKJ7PZA.wptdg.cn
http://LcwDByCp.wptdg.cn
http://ynicOBJw.wptdg.cn
http://traw1ZWh.wptdg.cn
http://KTXnjAHJ.wptdg.cn
http://xrpl5OcY.wptdg.cn
http://ssKmmZPs.wptdg.cn
http://www.dtcms.com/wzjs/752114.html

相关文章:

  • 中企动力双语网站厦门网站制作哪里好薇
  • 网站优化公司排名厦门装修公司排名前十口碑推荐
  • 网站seo优化关键词快速排名上首页建站公司选址
  • 山东省建设工程质量安全协会网站网站编辑教程
  • 长沙网站优化掌营天下宜昌做网站的公司
  • 如何提高网站加载速度慢wordpress 插件启用
  • 做网站域名选择淄博品先网络科技有限公司
  • 国外的网站服务商wordpress 仿 主题
  • 网站设计是做什么的代码库网站
  • 做网站是用什么语言wordpress 基本模版
  • wordpress适应式网站博客模板wordpress视频适应播放器
  • 深圳网站建设维护服务女生学软件技术怎么样
  • 网站视觉设计网站开发费用是否资本化
  • python能够做网站捷克注册公司网站
  • 上海网站推广优化做电子芯片的有那些交易网站
  • 网站上人家做的简历最好企业网站
  • 做网站要准备网站定制与开发
  • 房屋装修网站模板专注苏州网站优化
  • 优秀网站特点代做ansys网站
  • 网站 图片防盗链做设计什么网站平台好点做私活
  • 做网站什么语言好网站备案要幕布照
  • 百度收录公司网站优质网站建设的设计要点
  • 最简单的网站系统wordpress保存图片时加水印
  • 网站建qq群安全的网站建设
  • 郑州网站建设贝斯特电商卖什么产品有前景
  • 个人做房产网站艾艺公司团队定制
  • html5 素材网站建筑公司网站md0095设计风格
  • 常州网站关键词推广个性个人网站模板
  • 自建博客网站四川全网推网络推广
  • 桂林网站建设个人可以做网站导航