spring boot 应用启动流程原理_专家答疑-阿里云Spring Cloud Alibaba官网
铭师堂的云原生升级实践点此了解

spring boot 应用启动流程原理

发布时间 2024-09-26


用户问题 :

spring boot 应用启动流程原理


专家官方解答 :

Spring Cloud Alibaba下的Spring Boot应用启动流程原理主要遵循标准Spring Boot应用的启动机制,但会集成Alibaba提供的微服务组件,增强服务发现、配置管理、分布式事务处理等功能。基于已有的知识,我们可以概述其启动流程如下:

1. 打包为Fat Jar

  • Spring Boot应用通过Maven或Gradle等构建工具被打包成一个包含所有依赖和应用程序代码的可执行jar文件(Fat Jar)。
  • 在Spring Cloud Alibaba场景下,除了Spring Boot核心库外,还会包含如Nacos客户端、Dubbo/Sentinel等微服务治理相关依赖。

2. 启动入口

  • Main-Class: org.springframework.boot.loader.JarLauncher 是Spring Boot应用的启动入口点。
  • Start-ClassMANIFEST.MF中定义,指向用户自定义的Application类,如com.example.SpringCloudAlibabaApplication,该类中通常包含SpringApplication.run(...)方法来启动应用。

3. JarLauncher工作流程

  • 创建Archive: JarLauncher首先识别自身所在的jar文件并创建Archive实例。
  • 加载依赖: 通过getNestedArchives方法识别出所有嵌套的jar(即lib/目录下的依赖),创建LaunchedURLClassLoader来加载这些依赖。
  • 启动应用: 根据MANIFEST.MF中的Start-Class属性,以新线程启动用户的主应用程序类。

4. LaunchedURLClassLoader的特殊性

  • 它能够从Archive内部加载.class文件,这是通过利用Archive的getEntries方法获取资源实现的。

5. Spring Cloud Alibaba集成

  • 在Spring Boot应用启动后,Spring Cloud Alibaba的自动配置会开始工作,注册服务到Nacos、初始化配置中心客户端、设置断路器、负载均衡等。
  • 组件如Nacos Discovery Client会在应用上下文中初始化,自动发现其他服务,而配置中心则会动态地更新应用配置。

总结

Spring Cloud Alibaba环境下Spring Boot应用的启动,在遵循标准Spring Boot启动流程基础上,额外集成了Alibaba微服务生态的功能模块。这一过程涉及Fat Jar的创建、特定ClassLoader的使用及Spring Cloud Alibaba组件的自动配置与初始化,最终实现了一个具备微服务特性的应用启动过程。

---------------

参考链接 :

  • 专家经验:Spring boot 应用启动的原理介绍

---------------

答疑服务说明:

本内容经由技术专家审阅的用户问答的镜像生成,我们提供了专家智能答疑服务,使用方法: 用法1: 在页面的右下的浮窗”专家答疑“。 用法2: 点击专家答疑页(针对部分网站不支持插件嵌入的情况)

另:

有其他开源产品的使用问题?点击访问阿里AI专家答疑服务

反馈

如问答有错漏,欢迎点:差评给我们反馈。