Spring Boot 入门:5分钟搭建Hello World
你提供的内容是 Spring Boot 官方文档中的一节(3.4节),标题为 “Developing Your First Spring Boot Application”,即“开发你的第一个 Spring Boot 应用程序”。这一节通过一个简单的 “Hello World” Web 应用,带你一步步创建一个基于 Spring Boot 的项目,涵盖了从项目初始化、依赖管理、代码编写到打包运行的全过程。
下面我将逐段解析这段内容,帮助你理解其核心思想和技术要点,适合初学者或想系统了解 Spring Boot 工作原理的人。
🌱 一、总体目标:创建一个简单的 Web 应用
我们要做的就是一个最简单的 Web 程序:
- 当访问
http://localhost:8080/
时,返回"Hello World!"
- 使用 Maven 构建项目
- 不依赖 IDE,手动编写
pom.xml
和 Java 代码 - 最终打包成一个可执行的 JAR 文件(“fat jar”)
💡 这是一个典型的“入门示例”,但它背后展示了 Spring Boot 的几个关键特性:自动配置、起步依赖、内嵌服务器、可执行 JAR。
🔧 二、准备工作
文档建议先检查 Java 和 Maven 是否安装正确:
java -version
mvn -v
要求:
- Java 8 或以上
- Maven 3.3+(文中使用的是 3.5.4)
然后创建一个空目录作为项目根目录。
📦 三、创建 Maven 的 pom.xml
文件(3.4.1)
pom.xml
是 Maven 项目的配置文件,相当于项目的“配方”。
关键配置如下:
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.12.RELEASE</version>
</parent>
✅ spring-boot-starter-parent
的作用:
- 提供默认配置:比如编译版本(Java 8)、资源过滤、插件配置等。
- 依赖管理(Dependency Management):它已经预定义了常用库的版本号,这样你在引入其他 Spring Boot 组件时,可以省略版本号,避免版本冲突。
比如你加
spring-boot-starter-web
,不需要写<version>...</version>
,父 POM 已经帮你管理了。
🚀 四、添加类路径依赖(3.4.2)
Spring Boot 提供了“Starter Dependencies”(起步依赖),简化依赖引入。
我们要开发 Web 应用,所以添加:
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>
</dependencies>
✅ spring-boot-starter-web
包含了什么?
- Spring MVC(用于构建 Web 接口)
- 内嵌的 Tomcat 服务器(无需单独安装)
- JSON 支持(Jackson)
- 自动配置支持
你可以运行:
mvn dependency:tree
查看所有自动引入的依赖树,会发现多了上百个 JAR 包(包括 Spring 框架、Tomcat、日志等)。
💡 这就是“起步依赖”的威力:一句话引入一整套技术栈。
💻 五、编写 Java 代码(3.4.3)
创建文件:src/main/java/Example.java
import org.springframework.boot.*;
import org.springframework.boot.autoconfigure.*;
import org.springframework.web.bind.annotation.*;@RestController
@EnableAutoConfiguration
public class Example {@RequestMapping("/")String home() {return "Hello World!";}public static void main(String[] args) {SpringApplication.run(Example.class, args);}
}
🔍 代码解析
1. @RestController
- 是 Spring MVC 的注解。
- 表示这个类是一个控制器,所有方法返回的内容直接作为 HTTP 响应体(不会跳转页面)。
- 相当于
@Controller + @ResponseBody
。
2. @RequestMapping("/")
- 将 HTTP 请求路径
/
映射到home()
方法。 - 所有 GET 请求访问根路径都会调用这个方法。
3. @EnableAutoConfiguration
- 核心注解!告诉 Spring Boot 根据你添加的 jar 包自动配置项目。
- 因为你引入了
spring-boot-starter-web
,它包含了 Spring MVC 和 Tomcat,所以 Spring Boot 自动:- 配置了一个嵌入式的 Tomcat 服务器
- 启用了 Spring MVC
- 设置了默认的 DispatcherServlet
- 监听 8080 端口
✅ 这就是“约定优于配置”的体现:你不用写任何 XML 或配置类,Spring Boot 自动帮你搞定。
4. main
方法
- 标准的 Java 入口。
SpringApplication.run(Example.class, args)
是 Spring Boot 的启动入口。- 它会:
- 创建 Spring 容器(ApplicationContext)
- 扫描组件
- 启动内嵌 Web 服务器
- 部署应用
▶️ 六、运行应用(3.4.4)
使用 Maven 插件运行:
mvn spring-boot:run
输出日志中会出现 Spring Boot 的 ASCII 艺术字和启动时间:
:: Spring Boot :: (v2.3.12.RELEASE)
Started Example in 2.222 seconds
打开浏览器访问:
http://localhost:8080
看到:
Hello World!
✅ 成功!
📦 七、打包成可执行 JAR(3.4.5)
Spring Boot 的一大优势是:可以打包成一个独立的 JAR 文件,包含所有依赖和内嵌服务器,直接用 java -jar
运行。
步骤:
- 在
pom.xml
中添加插件:
<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins>
</build>
spring-boot-starter-parent
已经默认配置了repackage
目标,所以你只需要声明插件即可。
- 打包:
mvn package
生成两个文件:
target/myproject-0.0.1-SNAPSHOT.jar
:可执行的“fat jar”myproject-0.0.1-SNAPSHOT.jar.original
:Maven 原始打包的 JAR(不含依赖)
- 运行:
java -jar target/myproject-0.0.1-SNAPSHOT.jar
同样能看到启动日志和 Web 服务。
🧠 八、关键概念总结
概念 | 说明 |
---|---|
Starter Dependencies | 简化依赖引入,如 spring-boot-starter-web 一键引入 Web 开发所需全部依赖 |
Auto-configuration | 根据 classpath 中的 jar 包自动配置 Spring 应用(如发现 Tomcat 和 Spring MVC,就自动配置 Web 环境) |
Embedded Server | 内嵌 Tomcat/Jetty/Undertow,无需部署到外部服务器 |
Executable JAR | 打包成包含所有依赖的单一 JAR,便于部署和运行 |
SpringApplication.run() | 启动 Spring Boot 应用的核心方法 |
@SpringBootApplication | (虽然本例没用,但实际常用)它 = @Configuration + @EnableAutoConfiguration + @ComponentScan |
⚠️ 注意:这个例子使用了
@EnableAutoConfiguration
,但在实际开发中,我们通常使用@SpringBootApplication
注解,它包含了这个功能。
📚 九、下一步该学什么?(3.5 What to Read Next)
文档建议:
- 去 spring.io 查看更多“Getting Started”教程,比如:
- 如何连接数据库?
- 如何做安全认证?
- 如何做 REST API?
- 阅读 “Using Spring Boot” 章节,深入了解配置、外部化属性、 Profiles、日志等。
- 查看 “Spring Boot Features” 文档,学习更多高级特性。
✅ 总结:这个例子教会了我们什么?
技术点 | 学到了什么 |
---|---|
项目构建 | 使用 Maven 创建 Spring Boot 项目 |
依赖管理 | 使用 Starter 简化依赖引入 |
自动配置 | Spring Boot 能根据依赖自动配置环境 |
快速开发 | 几行代码就能启动一个 Web 服务 |
简化部署 | 打包成可执行 JAR,直接 java -jar 运行 |
💡 小贴士:现代开发更推荐使用 Spring Initializr
文档也提到:
你可以直接访问 start.spring.io 自动生成项目骨架。
推荐做法:
- 打开 https://start.spring.io
- 选择 Maven、Java、Spring Boot 版本
- 填写 Group、Artifact
- 添加依赖:Web
- 点击 “Generate” 下载项目 ZIP
- 解压后直接导入 IDE 或运行
这样可以省去手动写 pom.xml
的麻烦。
🧩 补充:现代写法(推荐)
上面的例子用了较老的写法。现在更标准的主类写法是:
// 文件名: MyprojectApplication.java
package com.example.myproject;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
@RestController
public class MyprojectApplication {@GetMapping("/")public String home() {return "Hello World!";}public static void main(String[] args) {SpringApplication.run(MyprojectApplication.class, args);}
}
✅ 使用
@SpringBootApplication
更标准,也支持组件扫描。
✅ 结语
这个 “Hello World” 示例虽然简单,但它浓缩了 Spring Boot 的四大核心优势:
- 自动配置(Auto-configuration)
- 起步依赖(Starters)
- 内嵌服务器(Embedded Server)
- 可执行 JAR(Executable JAR)
掌握这个例子,你就迈出了 Spring Boot 开发的第一步!
如果你想继续深入,我可以为你:
- 生成一个完整的 Spring Boot 项目模板
- 解释
application.properties
配置 - 演示如何连接数据库
- 教你如何做 REST API
欢迎继续提问!