Skip to content

Spring Boot

Spring Boot 建立在 Spring Framework 之上,通过自动配置、Starter 依赖和约定优于配置,帮助开发者快速创建可运行、可监控、易部署的 Spring 应用。它并不是替代 Spring,而是把常见工程能力整理成默认方案,让项目从第一天就具备清晰的启动方式、配置体系、日志体系和部署方式。

适用场景

  • 需要快速搭建 Web、REST API、定时任务或后台服务。
  • 需要减少 XML 和手动 Bean 配置,专注业务开发。
  • 需要统一管理配置、环境、日志、监控和健康检查。
  • 需要将应用打包为可独立运行的 Jar 或容器镜像。
  • 需要在团队内沉淀统一的工程规范,例如分层、配置、测试和部署约定。

学习路线

建议先理解启动流程、自动配置和 Starter;再学习配置管理、Profile、Web 开发和数据访问;随后补充 Actuator、测试、部署和最佳实践。

一条比较稳妥的路线是:

  1. 先运行最小应用,理解 @SpringBootApplication、组件扫描和内嵌服务器。
  2. 再看 Starter 与自动配置,明白“引入依赖后为什么能直接用”。
  3. 学习配置绑定和 Profile,把环境差异从代码中移出去。
  4. 编写 Web、数据访问和事务代码,形成清晰的 Controller、Service、Repository 分层。
  5. 使用 Actuator、日志和测试补齐生产运行与质量保障能力。
  6. 最后关注部署、容器化、JVM 参数、安全暴露面和故障排查。

目录

核心能力速览

  • 自动配置:根据 classpath、配置项和条件注解自动创建常用 Bean。
  • Starter:用一组依赖聚合简化 Maven 或 Gradle 配置。
  • 外部化配置:支持 properties、YAML、环境变量、命令行参数等配置来源。
  • 内嵌服务器:默认可内嵌 Tomcat、Jetty 或 Undertow,应用可直接运行。
  • Actuator:提供健康检查、指标、环境信息和运行时观测端点。
  • 测试支持:提供 @SpringBootTest、切片测试、MockMvc 等测试工具。

简单示例

java
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
public class BootDemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(BootDemoApplication.class, args);
    }
}

@RestController
class HelloController {
    @GetMapping("/hello")
    String hello() {
        return "Hello, Spring Boot";
    }
}

启动后访问:

text
GET http://localhost:8080/hello
Hello, Spring Boot

常见启动命令

bash
# Maven 项目本地运行
mvn spring-boot:run

# 打包后运行
java -jar target/demo-0.0.1-SNAPSHOT.jar

# 覆盖端口和环境
java -jar target/demo-0.0.1-SNAPSHOT.jar --server.port=8081 --spring.profiles.active=dev

命令行参数的优先级高于配置文件,适合部署时覆盖端口、Profile、日志级别等运行时配置。

排查入口

  • 应用无法启动:先看启动日志中的异常根因,常见原因是端口占用、Bean 冲突、配置绑定失败或数据库连接失败。
  • Bean 没有生效:检查启动类包位置、组件注解、Profile、条件装配和是否被自定义 Bean 覆盖。
  • 配置不生效:检查配置文件名称、缩进、Profile 是否激活,以及环境变量命名是否正确。
  • Web 接口 404:检查 Controller 是否被扫描、请求路径是否包含类级别 @RequestMapping 前缀。

注意事项

  • Spring Boot 3 基于 Spring Framework 6,要求 Java 17 或更高版本。
  • Spring Boot 3 使用 Jakarta EE,相关包名从 javax.* 迁移到 jakarta.*
  • 自动配置不是魔法,本质是条件装配;排查问题时优先查看依赖、配置和条件报告。
  • 不要把所有逻辑堆在启动类中,启动类只负责引导应用。
  • 生产环境不要暴露调试端点、明文密钥和完整异常堆栈。
二维码手机扫码查看