1. Spring Boot 概述

1.1 什么是 Spring Boot

Spring Boot 是基于 Spring 框架的开发框架,它通过”约定优于配置”的理念,简化了 Spring 应用的初始搭建和开发过程。Spring Boot 并不是对 Spring 功能的增强,而是提供了一种快速使用 Spring 的方式。

核心设计理念:

1.2 Spring Boot vs Spring Framework

特性 Spring Framework Spring Boot
配置 繁琐的 XML/Java 配置 自动配置,约定优于配置
部署 需要外置 Tomcat 内嵌 Tomcat,直接运行
依赖 手动管理版本冲突 Starter 依赖管理,自动版本管理
开发效率 较低,配置繁琐 极高,快速启动
监控 需要手动集成 内置 Actuator 监控端点
生产支持 需要额外配置 内置生产级特性

1.3 Spring Boot 核心特性

graph TB
    A[Spring Boot] --> B[自动配置]
    A --> C[Starter 依赖]
    A --> D[内嵌服务器]
    A --> E[生产级特性]
    A --> F[无代码生成]
    A --> G[XML 配置可选]

    B --> B1[根据类路径自动配置]
    C --> C1[简化依赖管理]
    D --> D1[Tomcat/Jetty/Undertow]
    E --> E1[监控/健康检查/Metrics]

特性详解:

  1. 自动配置:Spring Boot 根据类路径中的依赖自动配置 Bean,大大减少了手动配置的工作量。
  2. Starter 依赖:提供了一系列开箱即用的依赖包,每个 Starter 都包含了一组相关的依赖和自动配置。
  3. 内嵌服务器:内嵌了 Tomcat、Jetty 或 Undertow,无需部署 WAR 包,直接运行 JAR 包。
  4. 生产级特性:内置了健康检查、指标监控、外部化配置等生产级特性。
  5. 无代码生成:Spring Boot 不会生成代码,而是通过字节码增强和动态代理实现功能。

1.4 快速开始

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="<http://maven.apache.org/POM/4.0.0>"
         xmlns:xsi="<http://www.w3.org/2001/XMLSchema-instance>"
         xsi:schemaLocation="<http://maven.apache.org/POM/4.0.0>
         <http://maven.apache.org/xsd/maven-4.0.0.xsd>">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.2.0</version>
        <relativePath/>
    </parent>

    <groupId>com.example</groupId>
    <artifactId>spring-boot-demo</artifactId>
    <version>1.0.0</version>

    <properties>
        <java.version>17</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>