【Spring Boot】原理详解,三分钟带你搞懂springboot原理

06-01 1788阅读

Spring Boot 原理详解

Spring Boot 是基于 Spring 框架的快速开发工具,通过自动配置和约定优于配置的原则,简化了 Spring 应用的开发流程。以下从核心原理、启动流程、自动配置机制等方面详细解析 Spring Boot 的工作原理。


一、Spring Boot 的核心原理
  1. 约定优于配置

    • Spring Boot 通过默认配置减少开发者的配置工作量,例如默认的嵌入式 Tomcat 服务器、默认的配置文件路径等。
    • 开发者可以通过配置文件(如 application.properties 或 application.yml)覆盖默认配置。
    • 自动配置(Auto-Configuration)

      • Spring Boot 根据项目的依赖自动配置 Spring 应用程序。例如,如果项目中引入了 spring-boot-starter-web,Spring Boot 会自动配置 Spring MVC 和嵌入式 Tomcat。
      • 自动配置通过 @EnableAutoConfiguration 注解实现。
      • 起步依赖(Starter Dependencies)

        • Spring Boot 提供了一系列 starter 依赖,每个 starter 都包含了一组相关的依赖库。例如,spring-boot-starter-web 包含了 Spring MVC、Tomcat、Jackson 等依赖。
        • 通过起步依赖,开发者无需手动管理依赖版本,避免了依赖冲突。
        • 嵌入式服务器

          • Spring Boot 默认集成了嵌入式服务器(如 Tomcat、Jetty、Undertow),开发者无需单独部署应用,直接运行 JAR 包即可启动应用。

二、Spring Boot 的启动流程

Spring Boot 的启动流程主要分为以下几个步骤:

  1. 加载 SpringApplication

    • 通过 SpringApplication.run() 方法启动应用。
    • SpringApplication 类负责初始化应用上下文、加载配置、启动嵌入式服务器等。
    • 加载配置文件

      • Spring Boot 会加载 application.properties 或 application.yml 配置文件,并将其解析为 Environment 对象。
      • 创建应用上下文

        • Spring Boot 根据应用类型(如 Servlet、Reactive)创建相应的应用上下文(如 AnnotationConfigServletWebServerApplicationContext)。
        • 执行自动配置

          • Spring Boot 通过 @EnableAutoConfiguration 注解触发自动配置机制,扫描 META-INF/spring.factories 文件中的配置类,并根据条件决定是否加载。
          • 启动嵌入式服务器

            • Spring Boot 根据配置启动嵌入式服务器(如 Tomcat),并将应用部署到服务器中。
            • 发布应用启动事件

              • 应用启动完成后,Spring Boot 会发布 ApplicationStartedEvent 事件,开发者可以通过监听该事件执行自定义逻辑。

三、Spring Boot 的自动配置机制

Spring Boot 的自动配置是其核心特性之一,其原理如下:

  1. @EnableAutoConfiguration 注解

    • @EnableAutoConfiguration 注解会触发 Spring Boot 的自动配置机制。
    • 该注解通过 @Import(AutoConfigurationImportSelector.class) 导入自动配置类。
    • spring.factories 文件

      【Spring Boot】原理详解,三分钟带你搞懂springboot原理
      (图片来源网络,侵删)
      • Spring Boot 的自动配置类定义在 META-INF/spring.factories 文件中。
      • 例如,spring-boot-autoconfigure 模块中的 spring.factories 文件定义了大量的自动配置类。
      • 条件注解

        • Spring Boot 使用条件注解(如 @ConditionalOnClass、@ConditionalOnMissingBean)来控制自动配置类的加载。
        • 例如,DataSourceAutoConfiguration 类只有在 DataSource.class 存在于类路径时才会加载。
        • 自动配置示例

          【Spring Boot】原理详解,三分钟带你搞懂springboot原理
          (图片来源网络,侵删)
          • 例如,当项目中引入了 spring-boot-starter-web 依赖时,Spring Boot 会自动配置以下内容:
            • 嵌入式 Tomcat 服务器
            • Spring MVC 的默认配置(如视图解析器、消息转换器)
            • 静态资源处理(如 classpath:/static 目录)

四、Spring Boot 的核心注解
  1. @SpringBootApplication

    • 该注解是 Spring Boot 应用的入口注解,包含了以下三个注解的功能:
      • @Configuration:标识该类为配置类。
      • @ComponentScan:启用组件扫描,自动注册 Bean。
      • @EnableAutoConfiguration:启用自动配置。
      • @Configuration

        【Spring Boot】原理详解,三分钟带你搞懂springboot原理
        (图片来源网络,侵删)
        • 标识该类为配置类,可以定义 Bean。
        • @Bean

          • 用于在配置类中定义 Bean 对象。
          • @ConditionalOnClass

            • 当指定的类存在于类路径时,才会加载该配置。
            • @ConditionalOnMissingBean

              • 当容器中不存在指定的 Bean 时,才会加载该配置。

五、Spring Boot 的配置文件
  1. 配置文件格式

    • Spring Boot 支持 properties 和 yml 两种配置文件格式。
    • 例如:
      server.port=8080
      spring.datasource.url=jdbc:mysql://localhost:3306/mydb
      
      server:
        port: 8080
      spring:
        datasource:
          url: jdbc:mysql://localhost:3306/mydb
      
    • 配置文件加载顺序

      • Spring Boot 会按以下顺序加载配置文件:
        1. 项目根目录下的 /config 目录。
        2. 项目根目录。
        3. classpath:/config 目录。
        4. classpath:/ 目录。
      • 多环境配置

        • 通过 application-{profile}.properties 或 application-{profile}.yml 文件实现多环境配置。
        • 例如:
          # application-dev.properties
          server.port=8081
          
          # application-prod.properties
          server.port=80
          

六、Spring Boot 的扩展机制详解
  1. 自定义 Starter

    • 开发者可以创建自定义的 starter,定义自动配置类和起步依赖。
    • 自定义 starter 需要提供 spring.factories 文件,并在其中定义自动配置类。
    • 自定义注解

      • 开发者可以基于 Spring Boot 的条件注解创建自定义注解,实现更灵活的条件控制。
      • 自定义 Banner

        • 通过在 src/main/resources 目录下创建 banner.txt 文件,可以自定义 Spring Boot 启动时的 Banner。

七、Spring Boot 的优缺点
  1. 优点

    • 快速构建独立运行的 Spring 应用。
    • 提供默认配置,减少开发工作量。
    • 集成嵌入式服务器,简化部署流程。
    • 提供丰富的起步依赖,简化依赖管理。
    • 缺点

      • 对于初学者来说,自动配置的机制可能不够透明。
      • 在大型项目中,可能需要手动调整默认配置。

总结

Spring Boot 通过自动配置、起步依赖和嵌入式服务器等特性,极大地简化了 Spring 应用的开发和部署流程。其核心原理包括自动配置机制、条件注解和配置文件加载顺序等。通过深入理解 Spring Boot 的工作原理,开发者可以更好地利用其特性,构建高效、可维护的应用程序。

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

目录[+]

取消
微信二维码
微信二维码
支付宝二维码