Spring Boot
Spring Boot 能够帮助你创建独立的、生产级的、可以“直接运行”的基于 Spring 的应用程序。我们对 Spring 平台和第三方库持有“固化(Opinionated/有主见)”的观点,以便你能够以最小的开销快速上手。大多数 Spring Boot 应用程序只需要极少的 Spring 配置。
你可以使用 Spring Boot 创建简单的 Java 应用程序,并通过 java -jar 命令启动,或者采用传统的 war 包部署方式。
主要目标
- 为所有 Spring 开发提供极速且广泛可达的“入门体验”。
- 开箱即用:虽然内置了大量默认配置,但当业务需求偏离默认设定时,开发者可以轻松地覆盖这些配置。
- 提供一系列大型项目通用的非功能性特性:例如嵌入式服务器、安全管理、指标监测(Metrics)、健康检查(Health Checks)和外部化配置。
- 绝对没有代码生成(在不针对原生镜像时):不需要生成额外的 Java 代码,也不需要繁琐的 XML 配置。
补充教学
1. 什么是 "Opinionated" (有主见)?
这是 Spring Boot 核心的哲学。传统的 Spring 需要开发者手动选择版本、配置复杂的 Bean 依赖。而 Spring Boot 像是一位经验丰富的架构师,它预设了一套“最佳实践”的配置(例如:默认使用 Jackson 处理 JSON,默认使用 Tomcat 作为 Web 容器)。如果你同意这套配置,你几乎可以零配置启动;如果你有不同意见,你随时可以替换它们。
2. Starter 依赖的作用
Spring Boot 通过一系列的 spring-boot-starter-* 模块简化了依赖管理。例如,你只需要引入 spring-boot-starter-web,它就会自动包含 Spring MVC、Tomcat 和 Jackson 等所有 Web 开发所需的库,并确保它们的版本相互兼容,避免了臭名昭著的“依赖地狱”。
3. 为什么强调“无代码生成”?
某些框架通过在编译期生成大量源代码来实现功能,这虽然方便但增加了系统的复杂性和黑盒感。Spring Boot 坚持通过条件注解(Conditionals)和动态自动配置在运行时装配 Bean。这意味着你的代码库保持整洁,逻辑对开发者是透明且可调试的。
4. 嵌入式容器的革命
在 Spring Boot 之前,Java Web 开发必须先安装和配置 Tomcat/Jetty,然后将 WAR 包丢进去。Spring Boot 将容器直接嵌入到 JAR 包中,使得应用可以像运行一个普通的 main 方法一样启动。这极大地简化了 CI/CD 流程和云原生环境(如 Docker)下的部署。