环境准备
你需要安装以下程序来使用Spring Boot:
- JDK (Java Development Kit): Spring Boot 3.x 需要 JDK 17 或更高版本。Spring Boot 2.x 可以使用 JDK 8, 11 或 17。建议安装 JDK 17。
- 下载地址:https://www.oracle.com/java/technologies/downloads/
- 验证安装:打开命令行/终端,输入 java -version 和 javac -version,能看到版本号即可。
- 构建工具 (Maven 或 Gradle): Spring Boot 项目通常使用 Maven 或 Gradle 来管理依赖和构建项目。
- Maven: 大多数 IDE 内置,也可以单独下载安装。
- 下载:https://maven.apache.org/download.cgi
- 验证:mvn -version
- Gradle: 另一种流行的构建工具。
- 下载:https://gradle.org/install/
- 验证:gradle -version
- 建议初学者先熟悉 Maven,因为它在 Spring Boot 社区中更常见一些。
- Maven: 大多数 IDE 内置,也可以单独下载安装。
- IDE (集成开发环境):
- IntelliJ IDEA (Community 或 Ultimate 版): 强烈推荐,对 Spring Boot 支持非常好。
- Eclipse (with Spring Tools Suite - STS plugin): 也是一个不错的选择。
- Visual Studio Code (with Java Extension Pack and Spring Boot Extension Pack): 轻量级选择。
创建你的第一个Spring Boot项目
最简单的方式是使用 Spring Initializr (https://start.spring.io/)。这是一个官方提供的 Web 工具,可以帮你生成项目骨架。

- Project: 选择 Maven(或 Gradle ,如果你想用 Gradle)
- Language: 选择 Java
- Spring Boot: 选择一个最新的稳定版本 (比如 3.x.x 或 2.7.x)。如果你用的 JDK 8/11,请选择 2.7.x 系列。如果 JDK 17+,可以选择 3.x.x 系列。
- Project Metadata:
- Group: 通常是你的公司或组织的域名倒写,例如 com.example
- Artifact: 你的项目名称,例如 demo
- Name: 同 Artifact
- Description: 项目描述
- Package name: 会根据 Group 和 Artifact 自动生成,例如 com.example.demo
- Packaging: 选择 Jar (这是 Spring Boot 推荐的方式,可以内嵌服务器)
- Java: 选择你安装的 JDK 版本 (例如 17)
- Dependencies (依赖):
- 点击 "ADD DEPENDENCIES..." 按钮。
- 搜索并添加 Spring Web。这个依赖包含了构建 Web 应用(包括 RESTful API)所需的一切,如 Spring MVC 和内嵌的 Tomcat 服务器。
依赖
在软件开发中,“依赖” 指的是你的项目需要用到的其他代码库或模块,它们提供了特定的功能,让你不必从头开始编写所有东西。
想象一下你要建一座房子:
- 你不需要自己去烧砖、炼钢、砍伐木材。
- 你会去建材市场购买现成的砖块、钢筋、门窗等。这些现成的材料就是你的“依赖”。
在 Spring Boot (或任何 Java 项目) 中,依赖通常是以 JAR 文件的形式存在的第三方库。例如:
- 如果你想创建一个网页应用,你需要处理 HTTP 请求、响应等,这时你可以添加一个 Web 相关的依赖。
- 如果你想连接数据库,你需要一个数据库驱动的依赖。
- 如果你想简化一些重复的 Java 代码,你可以添加一些工具类的依赖。
Spring Initializr 允许你在这里选择项目启动时就需要的一些核心依赖。Maven (或 Gradle) 会在你生成项目后,自动帮你下载和管理这些依赖。
目前我们需要以下依赖(与上图一致):
- Spring Web
- 作用:这是构建 Web 应用程序的核心依赖,包括创建 RESTful API (现代 Web 服务常用的一种方式)、传统的 MVC (Model-View-Controller) 网站等。
- 它内嵌了像 Tomcat 这样的服务器,所以你不需要单独安装和配置 Web 服务器。
- 为什么选它? 目标是开发网站或提供 API 服务,这个依赖是必不可少的。
- Spring Security
- 作用:为你的应用程序提供安全功能,包括用户认证(你是谁?)和授权(你能做什么?)。
- 这是构建任何需要用户登录或保护资源的应用时非常重要的部分。
- 为什么选它? 应用涉及到用户账户、敏感数据或需要控制访问权限,就需要它。
- PostgreSQL Driver
- 作用:这是一个数据库驱动程序,允许你的 Java 应用程序连接和操作 PostgreSQL 数据库。
- 如果你选择其他数据库(如 MySQL, Oracle),你需要选择对应的驱动。
- 为什么选它? 我觉得特别好用,尤其是人性化UI管理。
- Spring Boot DevTools
- 作用:提供一系列开发时的便利工具,例如:
- 自动重启 (Automatic Restart):当你修改代码并保存后,应用会自动重启,让你更快看到改动效果。
- LiveReload: 当静态资源(HTML, CSS, JavaScript)改变时,浏览器自动刷新。代码发生改动,也会自动重启整个Spring Boot项目,不需要你自己手动重启。
- 为什么选它? 显著提升开发效率和体验,但通常只在开发环境使用,生产环境会禁用。
- 作用:提供一系列开发时的便利工具,例如:
- Lombok
- 作用:一个非常有用的 Java 库,可以通过注解自动生成很多样板代码,比如
getter
,setter
,toString()
, 构造函数等。 - 它可以让你的代码更简洁。
- 为什么选它? 减少冗余代码,提高开发效率。
- 作用:一个非常有用的 Java 库,可以通过注解自动生成很多样板代码,比如
- Spring Data JPA
- 作用:JPA (Java Persistence API) 是一种 Java EE规范,用于对象关系映射 (ORM)——即把你的 Java 对象映射到数据库表,反之亦然。Spring Data JPA 使得使用 JPA 变得非常简单。
- 它能帮你更容易地执行数据库的增删改查操作,而不需要写很多底层的 SQL 语句。
- 为什么选它? 与关系型数据库交互,并且希望用面向对象的方式操作数据。
导入Spring Boot项目到IDEA
现在你已经从 Spring Initializr 下载了项目的 .zip 文件。
- 解压缩文件:
- 找到你下载的 .zip 文件。
- 将它解压缩到你电脑上一个你方便管理项目的地方(例如 D:\workspace\ 或 ~/projects/)。
- 选择并安装 IDE (如果你还没有):
- IntelliJ IDEA: 建议使用IDEA,它对 Spring Boot 的支持非常好。
- Eclipse: 安装 Spring Tools Suite (STS) 插件后,也是一个不错的选择。
- Visual Studio Code (VS Code): 配合 Java Extension Pack 和 Spring Boot Extension Pack 也可以进行开发。
我们将以 IntelliJ IDEA 为例进行该教程。
- 导入项目到 IntelliJ IDEA:
- 打开 IntelliJ IDEA。
- 在欢迎界面,选择 "Open" (或者如果已经打开了其他项目,选择 File -> Open...)。
- 导航到你刚刚解压缩的项目文件夹 (例如 D:\workspace\web 或 ~/projects/web)。
- 选择项目的主文件夹 (即包含 pom.xml 文件的那个文件夹),然后点击 "OK"。
一般而言,IDEA会发现pom.xml文件,并自动导入Maven项目,如果没有的话,就找到pom.xml文件,在IDEA中右键点击内容,然后选择添加为Maven项目,等待同步完成即可。
如果提示Maven依赖下载失败等其它错误信息,大概率就是IDEA没有配置本地代理,打开文件-->设置-->外观与行为-->系统设置-->HTTP代理,选择手动配置代理-->HTTP,主机名填localhost,端口一般为7890,具体看你实际端口。
熟悉项目结构
一旦项目成功导入并且依赖下载完成,你会在 IntelliJ IDEA 的项目视图中看到类似这样的结构:
web (你的项目名)
├── .idea
├── .mvn (Maven wrapper 相关)
├── src
│ ├── main
│ │ ├── java
│ │ │ └── com
│ │ │ └── NZI
│ │ │ └── web (这是你的主包名,根据 Group 和 Artifact 生成)
│ │ │ └── WebApplication.java
│ │ ├── resources
│ │ │ ├── static (存放静态资源,如 CSS, JavaScript, 图片)
│ │ │ ├── templates (存放模板文件,如 Thymeleaf)
│ │ │ └── application.properties
│ └── test
│ └── java
│ └── com
│ └── NZI
│ └── web
│ └── WebApplicationTests.java (一个基础的测试类)
├── .gitignore (Git 版本控制忽略文件配置)
├── mvnw (Maven wrapper 脚本 - Linux/macOS)
├── mvnw.cmd (Maven wrapper 脚本 - Windows)
└── pom.xml (Maven 项目的核心配置文件)
让我们详细解释一下关键部分:
- src/main/java:
- 这是存放你所有 Java 源代码 的地方。
- com.NZI.web (或你设置的包名):这是你的代码的根包。
- WebApplication.java (或类似 XxxApplication.java 的文件,Xxx 是你的 ArtifactId 首字母大写):这是 Spring Boot 应用的主入口类。它通常包含一个 main 方法,并使用
@SpringBootApplication
注解。
package com.NZI.web;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class WebApplication {
public static void main(String[] args) {
SpringApplication.run(WebApplication.class, args);
}
}
@SpringBootApplication
是一个组合注解,它包含了:
@Configuration
: 标记这个类是一个配置类。@EnableAutoConfiguration
: 告诉 Spring Boot 根据你添加的依赖自动配置项目。@ComponentScan
: 扫描当前包及其子包下的组件(如@Controller
,@Service
,@Repository
等)。
- src/main/resources:
- 存放资源文件,这些文件不会被编译成 .class 文件,但会被打包到最终的 JAR/WAR 中。
- static/: 用于存放静态内容,如 HTML, CSS, JavaScript 文件和图片。当你的应用运行时,可以直接通过浏览器访问这些文件 (例如 http://localhost:8080/my-image.png)。
- templates/: 用于存放动态网页的模板文件(如果你使用像 Thymeleaf 或 FreeMarker 这样的模板引擎)。
- application.properties: 这是 Spring Boot 的核心配置文件。你可以在这里配置应用的各种属性,比如服务器端口、数据库连接信息、日志级别等等。这是一个非常重要的文件。
- src/test/java:
- 存放你的测试代码的地方。
- WebApplicationTests.java: Spring Initializr 会自动生成一个简单的测试类,用于验证应用程序上下文是否能正确加载。
- pom.xml:
- Project Object Model 文件,是 Maven 项目的灵魂。它定义了:
- 项目的基本信息 (group ID, artifact ID, version)。
- 项目的依赖 (dependencies):你在 Spring Initializr 选择的依赖都会列在这里。
- 项目的构建配置 (build):包括插件(比如 spring-boot-maven-plugin,用于打包可执行的 JAR)。
- 父项目 (spring-boot-starter-parent):它提供了很多有用的默认配置和依赖管理。
- Project Object Model 文件,是 Maven 项目的灵魂。它定义了:
- mvnw 和 mvnw.cmd: Maven Wrapper。它允许你在没有全局安装 Maven 的情况下运行 Maven 命令。推荐使用它来构建和运行项目,以保证构建环境的一致性。
运行
运行你的第一个 Spring Boot 应用:
- 在 IntelliJ IDEA 中,找到 src/main/java 下你的主应用程序类 WebApplication.java。
- 打开这个文件。
- 你会看到 main 方法旁边有一个绿色的三角形播放按钮。点击它,然后选择 "运行'WebApplication.main()'" 。
- 或者,在项目视图中右键点击 WebApplication.java 文件,选择 "运行'WebApplication.main()'"。
观察控制台输出:
如果一切顺利,你会看到类似这样的信息:
Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled.
2025-05-17T10:15:29.921+08:00 ERROR 18140 --- [web] [ restartedMain] o.s.b.d.LoggingFailureAnalysisReporter :
***************************
APPLICATION FAILED TO START
***************************
Description:
Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.
Reason: Failed to determine a suitable driver class
Action:
Consider the following:
If you want an embedded database (H2, HSQL or Derby), please put it on the classpath.
If you have database settings to be loaded from a particular profile you may need to activate it (no profiles are currently active).
进程已结束,退出代码为 0
发生错误了,这是为什么呢?
我们仔细看这一行代码:
Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.
它的意思是Spring Boot找不到我们数据资源的URL地址。
那我们该怎么解决?
因为我们在依赖中添加了PostgreSQL Driver,以便我们的Spring Boot能够与数据库交互,那必然启动应该与数据库连接,我们应该在src/main/resources/application.properties
中配置我们的数据库信息。
1.打开application.properties,然后添加以下代码:
spring.application.name=web
spring.datasource.driver-class-name=org.postgresql.Driver
spring.datasource.url=jdbc:postgresql://localhost:5432/your_database_name
spring.datasource.username=your_username # 默认为高级用户postgres
spring.datasource.password=your_password
spring.jpa.show-sql=true # 在控制台打印执行的SQL语句 (开发时有用)
spring.jpa.properties.hibernate.format_sql=true # 格式化打印的SQL语句 (开发时有用)
将username、password和url后面的your_database_name换成你自己的数据库对应的信息。
没用过postgresql?前往https://www.postgresql.org/下载并配置postgresql。关于postgresql教程将会在后续几天发布文档。
当我们配置好数据库账户密码等基础信息后,重新启动Spring Boot,如果你在你的电脑或服务器上运行过其它服务器框架,你可能会遇到以下错误:
Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled.
2025-05-17T11:01:25.801+08:00 ERROR 2940 --- [web] [ restartedMain] o.s.b.d.LoggingFailureAnalysisReporter :
***************************
APPLICATION FAILED TO START
***************************
Description:
Web server failed to start. Port 8080 was already in use.
Action:
Identify and stop the process that's listening on port 8080 or configure this application to listen on another port.
进程已结束,退出代码为 0
Web server failed to start. Port 8080 was already in use.
告诉我们8080这个端口已经被占用。
我们现在有两种解决办法:
- 停用现在在8080端口上运行的程序后台(如果这个程序不重要)。
- 将
server.port=你想要的端口号
加入到application.properties
最后。
目前我们的application.properties
是这个样子(图中数据库信息是我自己的)

重新启动Spring Boot应用,然后我们看到:
2025-05-17T11:08:31.042+08:00 INFO 21920 --- [web] [ restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port 8081 (http)
2025-05-17T11:08:31.050+08:00 INFO 21920 --- [web] [ restartedMain] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2025-05-17T11:08:31.050+08:00 INFO 21920 --- [web] [ restartedMain] o.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/10.1.40]
2025-05-17T11:08:31.081+08:00 INFO 21920 --- [web] [ restartedMain] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2025-05-17T11:08:31.082+08:00 INFO 21920 --- [web] [ restartedMain] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 604 ms
2025-05-17T11:08:31.161+08:00 INFO 21920 --- [web] [ restartedMain] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...
2025-05-17T11:08:31.340+08:00 INFO 21920 --- [web] [ restartedMain] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Added connection org.postgresql.jdbc.PgConnection@743f4116
2025-05-17T11:08:31.341+08:00 INFO 21920 --- [web] [ restartedMain] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.
恭喜,你的第一个Spring Boot应用启动成功了!
关键信息是:
Tomcat initialized with port 8081 (http)
:这表示内嵌的 Tomcat Web 服务器已经启动,并且正在监听 8081 端口。Start completed.
: 表示你的 Spring Boot 应用已成功启动。
验收你的第一个Spring Boot应用
打开浏览器输入http://localhost:8081
然后回车,你会看到这样的画面:

这是因为我们加了Spring Security
这个安全依赖,现在我们的Spring Boot应用的所有API端口都受到这个依赖的保护。
Username默认是user,Password会在启动后控制台内显示:

其中Using generated security password
后面的字段就是你的安全密码。
复制登录后我们就成功的看到我们目前Spring Boot初始的画面:

为什么会是这个页面?
因为我们还没有开始给应用编写代码,我们的Spring Boot应用还没有一个我们写的页面。
下一篇文档将教你如何自己添加一个页面。
Comments NOTHING