Spring Boot Initializr 教程:一步一步创建你的第一个 Spring Boot 项目
Spring Boot 已经成为 Java 领域构建微服务和企业级应用的事实标准。它极大地简化了 Spring 应用的搭建和开发过程,让你能够专注于业务逻辑,而不是繁琐的配置。而要开始一个 Spring Boot 项目,最快、最便捷的方式就是使用 Spring Boot Initializr。
Spring Boot Initializr 是 Spring 官方提供的一个在线工具和 API 服务,旨在帮助开发者快速生成一个基本的 Spring Boot 项目骨架。它消除了手动配置构建系统(如 Maven 或 Gradle)、选择依赖以及设置项目结构的初期障碍。通过简单的选择和点击,你就能下载一个可以直接导入 IDE 并运行的初始项目。
本教程将带你一步一步了解如何使用 Spring Boot Initializr 创建一个简单的 Spring Boot 项目。我们将详细介绍 Initializr 页面上的每一个选项,以及生成的项目结构和如何运行它。
为什么选择 Spring Boot Initializr?
在深入教程之前,让我们先快速回顾一下使用 Initializr 的主要优势:
- 速度与便捷: 在几秒钟内生成一个功能完备的项目骨架,无需手动创建文件和配置。
- 避免配置错误: Initializr 确保了构建文件(
pom.xml
或build.gradle
)中的依赖版本兼容且正确。 - 标准化项目结构: 生成的项目遵循 Spring Boot 的标准目录布局,易于团队协作和维护。
- 轻松添加依赖: 通过搜索和选择,你可以方便地加入各种 Spring 生态系统中的 Starter 依赖。
- 多种选择: 支持 Maven 和 Gradle、多种 Java 版本、Kotlin 和 Groovy 语言等。
有了这些优势,使用 Initializr 无疑是开启 Spring Boot 项目的最佳起点。
第一步:访问 Spring Boot Initializr 网站
首先,打开你的网络浏览器,访问 Spring Boot Initializr 的官方网站:
你会看到一个简洁直观的网页界面,这就是我们创建项目的“控制面板”。
第二步:配置你的项目基本信息(Project Metadata)
在 Initializr 页面上,左侧区域是用来配置项目元数据的。你需要在这里指定项目的基本属性。让我们逐一了解这些选项:
-
Project (项目类型):
- Maven Project: 使用 Maven 作为构建工具。Maven 是一个流行的项目管理和理解工具,基于项目对象模型(POM)。
- Gradle Project: 使用 Gradle 作为构建工具。Gradle 是另一个强大的构建工具,使用 Groovy 或 Kotlin DSL 进行配置,通常更灵活且在某些场景下构建速度更快。
- 选择建议: 如果你刚开始接触或者团队成员更熟悉 Maven,选择 Maven 是一个稳妥的选择。如果追求构建速度或喜欢更灵活的配置方式,可以考虑 Gradle。在本教程中,我们将以 Maven Project 为例进行讲解。
-
Language (编程语言):
- Java: 最常用的选项,Spring Boot 的原生语言。
- Kotlin: JetBrains 开发的一种现代、静态类型的 JVM 语言,与 Java 互操作性良好,越来越受欢迎。
- Groovy: 一种动态类型的 JVM 语言。
- 选择建议: 大多数 Spring Boot 项目使用 Java。本教程将选择 Java。
-
Spring Boot (版本):
- 这里列出了各种 Spring Boot 版本。通常会显示最新的稳定版本(GA – General Availability)。
- 带有
SNAPSHOT
或M
/RC
后缀的版本是开发中的快照版本、里程碑版本或发布候选版本,不建议在生产环境中使用。 - 选择建议: 始终选择最新的 稳定 版本。它们已经过充分测试,包含了最新的功能和 bug 修复。在教程写作时,选择一个最新的非快照/非里程碑版本即可。
-
Project Metadata (项目元数据): 这一部分需要填写项目的标识信息。
- Group (组 ID): 通常是公司或组织的域名倒序,例如
com.example
或org.myapp
。这有助于防止命名冲突。 - Artifact (项目 ID): 项目的名称,例如
demo
、myproject
、userservice
。它将成为 JAR/WAR 文件的名称一部分,也是构建工具中的核心标识。 - Name (项目名称): 项目的可读名称,通常与 Artifact 相同,但允许包含空格或其他字符。它用于描述项目。
- Description (项目描述): 对项目功能的简短描述。
- Package name (包名): 根 Java 包的名称,通常是 Group ID 后面跟着 Artifact ID,例如
com.example.demo
。这是你的主要应用程序类将存放的位置。 - Packaging (打包方式):
- Jar: 将应用程序打包成一个可执行的 JAR 文件,这是 Spring Boot 推荐的微服务打包方式,包含了嵌入式 Web 服务器。
- War: 将应用程序打包成一个 WAR 文件,以便部署到传统的外部 Web 服务器(如 Tomcat, Jetty, WildFly)中。
- 选择建议: 对于大多数 Spring Boot 应用(尤其是微服务),选择 Jar 是最常见和推荐的方式。
- Java (Java 版本): 选择你的项目将使用的 Java 版本。确保你本地安装了选定的 Java 版本或更高版本。
- 选择建议: 选择一个最新的 LTS (Long-Term Support) 版本,例如 Java 11、Java 17 或 Java 21,因为它们提供长期支持和最新的语言特性。
- Group (组 ID): 通常是公司或组织的域名倒序,例如
填写示例:
字段 | 值示例 | 说明 |
---|---|---|
Project | Maven Project | 使用 Maven 构建 |
Language | Java | 使用 Java 语言 |
Spring Boot | (最新稳定版本) | 例如 3.x.x |
Group | com.example |
公司域名倒序 |
Artifact | demo |
项目 ID |
Name | demo |
项目名称 |
Description | Demo project for Spring Boot |
项目描述 |
Package name | com.example.demo |
根包名 |
Packaging | Jar | 打包成可执行 Jar |
Java | 17 或 21 | 选择一个 LTS 版本,确保本地已安装 |
填写完毕后,左侧区域的配置就完成了。
第三步:添加依赖(Add Dependencies)
页面的右侧区域是用来添加项目所需依赖的。Spring Boot Starter 依赖是 Spring Boot 的核心概念之一,它们是一组方便的依赖描述符,可以包含应用程序所需的所有常见依赖,并自动进行版本管理。例如,spring-boot-starter-web
包含了构建 Web 应用所需的一切依赖(如 Spring MVC, Tomcat 等)。
点击绿色的“Add Dependencies”按钮。会弹出一个搜索框和依赖列表。
你可以通过搜索框输入关键字来查找你需要的依赖,或者浏览列表。Initializr 提供了非常多的 Starter 依赖,涵盖了 Web、数据访问、安全、消息队列、测试等各种方面。
对于一个简单的演示项目,我们至少需要以下依赖:
- Spring Web: 这是构建 Web 应用(包括 RESTful 服务)的必要依赖。它会自动引入 Spring MVC 和嵌入式 Web 服务器(默认是 Tomcat)。
- 在搜索框输入 “Web”,找到 “Spring Web” 并点击添加。
- Spring Boot DevTools: 这个依赖为开发者提供了许多便利功能,例如修改代码后自动重启应用(Hot Swapping),对于开发非常有用。
- 在搜索框输入 “DevTools”,找到 “Spring Boot DevTools” 并点击添加。
添加后,你会在右侧区域看到已经选中的依赖列表,例如:
Selected Dependencies:
* Spring Web
* Spring Boot DevTools
你可以根据项目需求继续添加其他依赖,例如:
* Spring Data JPA
和 H2 Database
(用于简单的数据库访问)
* Spring Security
(用于安全认证和授权)
* Thymeleaf
或 FreeMarker
(用于服务器端模板渲染)
* Lombok
(简化 Java Bean 编写)
* 等等…
重要提示: 对于初学者,建议先添加最基本和必需的依赖。你随时可以在项目生成后,手动修改 pom.xml
或 build.gradle
文件来添加或删除依赖。
第四步:生成项目(Generate)
完成左侧的基本信息配置和右侧的依赖选择后,你就准备好生成项目了。
在页面的底部或右侧,你会看到一个按钮:
* Generate: 生成一个 .zip 压缩包,包含配置好的项目骨架。
* Explore: 查看项目将生成的结构和文件内容,但不下载。这个功能对于了解 Initializr 生成了什么非常有帮助。
点击 Generate 按钮。
浏览器会下载一个名为 demo.zip
(如果你在 Artifact 字段填写的是 demo
) 的文件。这就是你的 Spring Boot 项目骨架压缩包。
第五步:解压并导入到 IDE
下载完成后,找到 demo.zip
文件,并将其解压到你希望存放项目的目录。
解压后,你会看到一个名为 demo
的文件夹(或者你指定的 Artifact 名称)。这个文件夹就是你的 Spring Boot 项目的根目录。
接下来,你需要将这个项目导入到你常用的集成开发环境(IDE)中。主流的 Java IDE 都提供了方便的导入 Maven 或 Gradle 项目的功能:
- IntelliJ IDEA:
- 选择
File
->Open...
- 导航到你解压后的项目文件夹 (
demo
),选中该文件夹并点击Open
。 - IntelliJ 会自动检测到这是一个 Maven 或 Gradle 项目,并加载相应的构建配置。
- 选择
- Spring Tool Suite (STS) 或 Eclipse:
- 选择
File
->Import...
- 在弹出的对话框中,展开
Maven
或Gradle
选项。 - 选择
Existing Maven Projects
或Existing Gradle Project
。 - 点击
Next
。 - 点击
Browse...
选择你解压后的项目根目录 (demo
)。 - 点击
Finish
完成导入。
- 选择
导入过程可能需要一些时间,IDE 会下载项目所需的依赖库。请确保你的电脑连接到网络。
第六步:探索项目结构
项目成功导入 IDE 后,展开项目视图,你会看到 Initializr 生成的标准 Spring Boot 项目结构。以 Maven 项目为例,典型的结构如下:
demo/
├── .mvn/
│ └── wrapper/
│ ├── maven-wrapper.jar
│ └── maven-wrapper.properties
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── example/
│ │ │ └── demo/
│ │ │ └── DemoApplication.java <-- 主应用类
│ │ └── resources/
│ │ ├── application.properties <-- 配置文件
│ │ ├── static/ <-- 静态资源 (HTML, JS, CSS等)
│ │ └── templates/ <-- 模板文件 (Thymeleaf, FreeMarker等)
│ └── test/
│ └── java/
│ └── com/
│ └── example/
│ └── demo/
│ └── DemoApplicationTests.java <-- 测试类
├── .gitignore <-- Git 忽略文件列表
├── mvnw <-- Maven Wrapper 脚本 (Linux/macOS)
├── mvnw.cmd <-- Maven Wrapper 脚本 (Windows)
└── pom.xml <-- Maven 项目对象模型文件
让我们看看几个关键文件和目录:
-
pom.xml
(或build.gradle
):- 这是项目的构建配置文件。它定义了项目的基本信息、依赖关系、构建插件等。
- 如果你使用的是 Maven,
pom.xml
文件会包含spring-boot-starter-parent
作为父项目(提供了默认配置和依赖管理),以及你在 Initializr 中选择的 Starter 依赖(如spring-boot-starter-web
和spring-boot-devtools
)。 - 例如,
pom.xml
中会有一段<dependencies>
标签,列出了所有依赖项。如果你需要添加新的依赖,通常就是编辑这个文件。 - 它还会包含
spring-boot-maven-plugin
,这个插件使得你的 Spring Boot 应用可以被打包成可执行的 JAR 文件,并提供了spring-boot:run
等方便的命令。
-
src/main/java/<package>/<Application>Application.java
:- 这是应用程序的入口点。它包含一个
main
方法,这是 Java 应用程序的标准入口。 - 这个类上会有一个
@SpringBootApplication
注解。这是一个组合注解,等同于同时使用了@Configuration
、@EnableAutoConfiguration
和@ComponentScan
。@Configuration
: 标记这个类是一个配置类。@EnableAutoConfiguration
: 开启 Spring Boot 的自动配置机制。Spring Boot 会根据你添加的依赖(比如spring-boot-starter-web
)自动配置相应的组件(比如内嵌的 Tomcat 服务器、Spring MVC)。@ComponentScan
: 扫描当前包及其子包下的组件(如@Component
,@Service
,@Repository
,@Controller
等),并将它们注册为 Spring Bean。
SpringApplication.run(DemoApplication.class, args);
这行代码负责启动 Spring Boot 应用。
- 这是应用程序的入口点。它包含一个
-
src/main/resources/application.properties
(或application.yml
):- 这是 Spring Boot 的全局配置文件。你可以在这里配置各种应用程序属性,例如服务器端口号、数据库连接信息、日志级别等。
- Initializr 默认生成的是一个空文件,你需要根据需要手动添加配置项。
-
src/test/java/<package>/<Application>ApplicationTests.java
:- 这是 Spring Boot 提供的默认测试类。它使用了
@SpringBootTest
注解,可以在集成测试环境中加载 Spring 应用上下文。你可以基于这个模板编写单元测试和集成测试。
- 这是 Spring Boot 提供的默认测试类。它使用了
第七步:运行你的第一个 Spring Boot 项目
尽管我们还没有编写任何业务逻辑(例如一个 Controller 来响应 HTTP 请求),但 Initializr 生成的项目已经是可运行的。运行这个项目会启动内嵌的 Web 服务器(因为我们添加了 spring-boot-starter-web
依赖),但由于没有定义任何端点,访问任何路径都会得到一个默认的错误页面或 Whitelabel Error Page。
运行 Spring Boot 应用有几种方式:
-
在 IDE 中运行:
- 找到主应用类 (
DemoApplication.java
)。 - 右键点击该文件或类名。
- 选择
Run 'DemoApplication.main()'
(IntelliJ IDEA) 或Run As
->Java Application
(Eclipse/STS)。 - IDE 会编译并启动应用程序。
- 找到主应用类 (
-
使用 Maven Wrapper 或 Gradle Wrapper (命令行):
- 打开命令行终端,切换到你的项目根目录 (
demo
文件夹)。 - 对于 Maven:执行
./mvnw spring-boot:run
(Linux/macOS) 或mvnw spring-boot:run
(Windows)。 - 对于 Gradle:执行
./gradlew bootRun
(Linux/macOS) 或gradlew bootRun
(Windows)。 - Wrapper 脚本 (
mvnw
,gradlew
) 会自动下载并使用指定版本的 Maven 或 Gradle 来运行项目,确保构建环境的一致性。
- 打开命令行终端,切换到你的项目根目录 (
无论哪种方式,你都会在控制台看到 Spring Boot 的启动日志。日志中会显示 Spring Logo、Spring Boot 版本、以及内嵌服务器(Tomcat)启动的信息,例如:
...
INFO ... : Starting DemoApplication v0.0.1-SNAPSHOT using Java 17 ...
INFO ... : No active profile set, falling back to 1 default profile: "default"
INFO ... : Started DemoApplication in X.XXX seconds (JVM running for Y.YYY)
INFO ... : Tomcat initialized with port(s): 8080 (http)
INFO ... : Netty started on port 8080
INFO ... : Netty server started on port 8080.
INFO ... : Tomcat started on port(s): 8080 (http) with context path ''
INFO ... : Started DemoApplication in ...
注意日志中显示的端口号,通常是 8080。这意味着内嵌的 Tomcat 服务器已经在 8080 端口上启动并监听请求了。
要停止应用程序,只需在 IDE 的运行控制台点击停止按钮,或者在命令行中按 Ctrl+C
。
结语
恭喜你!你已经成功使用 Spring Boot Initializr 创建并运行了一个基本的 Spring Boot 项目。这个项目骨架为你后续的开发工作奠定了坚实的基础。
从这里开始,你可以继续添加新的类来构建你的应用程序:
- 创建 Controller 类来处理 HTTP 请求。
- 创建 Service 类来实现业务逻辑。
- 创建 Repository 类来处理数据访问。
- 修改
application.properties
来配置数据库连接、服务器端口等。 - 添加更多的依赖来集成其他技术栈(如 Spring Security, Kafka, Redis 等)。
Spring Boot Initializr 只是你 Spring Boot 开发旅程的第一步,但它是最关键和最高效的第一步。掌握了如何使用 Initializr,你就可以轻松地开始任何新的 Spring Boot 项目。
希望这篇详细教程对你有所帮助!现在,开始编写你的业务代码,构建伟大的应用程序吧!