Spring Boot 是一个广泛流行的框架,通常用于构建单体 MVC 应用程序、实时应用程序以及微服务。对于 Web 应用程序,Spring Boot 提供了创建 REST API、处理 HTTP 请求以及使用诸如 Thymeleaf 这样的模板引擎渲染视图的工具。同样,对于微服务,Spring Boot 支持 Spring Cloud,通过使用诸如服务发现、负载均衡和配置管理等特性。
本文向初学者介绍 Spring Boot 框架,并提供一个创建您的第一个 Spring Boot 项目的循序渐进的指南,该项目提供 hello world 消息。
1. Spring Boot 简介
Spring Boot 是一个开源框架,它简化了基于 Spring 的独立、生产级应用程序的开发。Spring Boot 建立在 Spring Framework 之上,并提供各种工具、库和约定来简化应用程序的配置和部署。
Spring Boot 对 Spring 平台和第三方库采取了一种有意见的观点。当我们向类路径中添加这些库时,Spring Boot 会自动配置库中最明显需要的功能。虽然,它允许覆盖、自定义或完全禁用任何模块或库的自动配置。
例如,如果我们想在应用程序中添加持久性功能,我们只需将 spring-boot-starter-data-jpa 依赖项添加到项目中,它就会自动执行以下操作
- 包含必要的依赖项,例如 Jakarta Persistence API (JPA) 和 Hibernate 等。
- 设置 DataSource、EntityManagerFactory 和事务管理。
- 扫描应用程序的类路径中的 @Entity 类并将其注册到上下文中。
- 扫描 JpaRepository 或相关接口并配置它们。
- 从 application.properties 读取 数据库连接属性 并设置到指定数据库的连接。
- 配置默认连接池以优化数据库连接并有效地重用它们。
如果没有 Spring Boot,我们将不得不单独配置上述所有功能。Spring Boot 自动配置消除了这种痛苦,并为我们做所有事情。我们可以进一步创建特定的 bean 或编写自定义属性以自定义上述列出的任何功能。
1.1. Spring Boot 的显著特性
Spring Boot 框架在任何普通应用程序中提供以下功能
- Spring Boot Starters:Starters 是常见用例的预配置模板,例如 Web 应用程序、持久性、消息传递等。我们在简介部分讨论的 data-jpa 或 persistence starter。
- 自动配置:Spring Boot 采用约定优先于配置的方法,并根据项目的依赖项和设置自动配置 bean。
- 嵌入式服务器:Spring Boot 包含嵌入式 servlet 容器(默认是 Tomcat)以运行应用程序,无需外部服务器。
- 生产就绪功能:Spring Boot 提供了生产就绪功能,例如健康检查、指标、安全性和外部化配置。
1.2. Spring Boot 的局限性和缺点
凡事都有代价。Spring Boot 也不例外。以下是使用 Spring Boot 的局限性或缺点
- 初始学习曲线:Spring Boot 在底层自动完成许多操作,这对于新开发人员来说可能会让人应接不暇。如果没有 Spring Boot,当我们自己编写所有内容时,需要花费时间,但可以给我们更多的控制权和信心。
- 使用非标准库时的灵活性有限:Spring Boot 的自动配置方法并不总是与特定的项目需求一致。例如,Spring Boot 自动配置 HikariCP 作为默认连接池实现。假设我们希望在组织内部拥有一个自定义连接池。在这种情况下,编写和使用自定义 bean 和自定义非标准属性可能与 Spring Boot 的自动配置不一致。
- 复杂的调试:由于自动配置和幕后操作,调试复杂问题可能具有挑战性。开发人员可能无法完全了解组件的连接和交互方式。
2. Spring Boot 应用的前提条件
在我们开始开发第一个应用程序之前,请确保我们拥有以下内容
- Java 开发工具包 (JDK):Spring Boot 在 Java 上运行。对于 Spring Boot 3.x,最低要求的版本是 Java 17。Spring Boot 2.x 需要最低 JDK 8 或更高版本。
- 构建工具:Maven 或 Gradle 等构建工具将有助于管理项目的依赖项和构建过程。
- 集成开发环境 (IDE):虽然也可以在文本编辑器中编写和运行应用程序,但使用 IntelliJ IDEA、Eclipse 或 Visual Studio Code 等 IDE 有助于代码完成、自动编译、调试和项目管理等功能。
此外,预计需要具备 Java 编程和 Spring 框架的基本知识。这将帮助您更深入地了解 Spring Boot 的魔力。
3. 创建新的 Spring Boot 项目
对于初学者来说,创建新 Spring Boot 项目最简单的方法是使用 Spring Initializr 网站。它允许我们选择首选的构建工具、Java 版本和项目依赖项,所有都在一个屏幕上。

选择所有首选项后,我们可以将其下载为 zip 文件并将其导入到 IDE 作为现有的 Maven 项目。在本演示中,我们可以使用 IntelliJ Idea 来编写和执行代码。

4. 剖析生成的代码
让我们了解应用程序的代码结构和生成的文件的内容。
4.1. 项目结构
项目中创建的主要目录是
- /src/main/java:包含应用程序的 Java 源代码。我们将所有新的类和接口都写在这个目录中。
- /src/test/java:包含应用程序的测试代码。所有新的单元测试都放在这个目录中。
- /src/main/resources:包含应用程序使用的非 Java 资源。例如,属性文件、视图文件、配置文件等。
当我们构建应用程序时,所有编译后的文件都将进入 /target 目录。构建工具从该目录生成部署存档文件(.jar 或 .war 文件)。
4.2. 生成的文件
该工具生成的主要文件是
MyFirstAppApplication.java
它包含main()方法,这是应用程序运行时的起始点。它包含@SpringBootApplication注解。它内部触发 bean 的自动配置和组件扫描,配置应用程序中的所有 bean 并将其注册到应用程序上下文中。
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class MyFirstAppApplication {
public static void main(String[] args) {
SpringApplication.run(MyFirstAppApplication.class, args);
}
}
MyFirstAppApplicationTests.java
它包含 Junit 5 测试,用于单元测试应用程序代码。我们可以在该包中创建更多此类类。
@SpringBootTest
class MyFirstAppApplicationTests {
@Test
void contextLoads() {
}
}
application.properties
它包含配置特定模块所需的默认属性。默认情况下,它是空的。
pom.xml
它是构建文件,用于管理项目的依赖项和其他库。我们可以从该文件中添加或删除依赖项。
请注意,spring-boot-starter-parent是一个特殊的 Maven 项目,用作所有 Spring Boot 应用程序的父项目或超级 POM。它的版本控制着启动模块提供的默认功能以及依赖库的版本。
spring-boot-maven-plugin是 Spring 团队提供的 Maven 插件。它简化了构建和打包 Spring Boot 应用程序的过程,使其可执行且易于部署。
<?xml version="1.0" encoding="UTF-8"?>
<project ...>
<modelVersion>4.0.0</modelVersion>
<!-- The parent is always the spring-boot-starter-parent -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.1.1</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.howtodoinjava.demo</groupId>
<artifactId>my-first-app</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>my-first-app</name>
<description>My First Application with Spring Boot</description>
<properties>
<java.version>17</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
5. 编写你的第一个控制器
生成的应用程序仅提供必要的基础设施,我们必须编写针对最终用户的附加业务逻辑。例如,我们可以编写一个简单的 REST API,该 API 接受用户的输入,连接到后端数据库,并以 JSON/XML 格式返回适当的响应。
在本教程中,我们正在编写一个简单的 API,该 API 响应返回消息 'Hello, World!'。我们创建一个新的类HelloWorldController并编写以下代码。
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloWorldController {
@GetMapping("hello")
String hello() {
return "Hello, World!";
}
}
编写高级 REST API 超出了本文的范围,但你可以在Spring Boot REST API 示例 – 逐步指南中了解有关它们的更多详细信息。
6. 构建应用程序
创建控制器后,我们可以在 IDE 本身中测试 API 代码,而 IDE 正是为此目的而设计的。
如果,我们没有使用 IDE,我们必须编译应用程序并将其构建为可执行的 jar 文件。该 jar 文件可以作为正常的应用程序从命令行运行。
mvn build
它在/target目录中生成一个名为my-first-app-0.0.1-SNAPSHOT.jar的 jar 文件。我们可以在pom.xml文件中自定义生成的 jar 文件的名称。
<build>
<finalName>my-first-spring-boot-app</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
现在我们再次运行‘mvn package’命令,它会创建一个名为my-first-spring-boot-app.jar的 jar 文件。
7. 运行和测试应用程序
要在开发环境中运行应用程序,如前一节所述,我们可以直接从 IDE 运行。为此,右键单击MyFirstAppApplication.java并选择'Run MyFirstAppApplication.main()'选项。
上述命令在自动包含在spring-boot-starter-web模块中的嵌入式 Tomcat 服务器中运行应用程序。

要从终端或命令提示符运行应用程序,我们可以使用以下命令
mvn spring-boot:run
它从终端运行应用程序,我们可以验证打印的日志。
[INFO] Scanning for projects...
[INFO]
[INFO] ----------------< com.howtodoinjava.demo:my-first-app >-----------------
[INFO] Building my-first-app 0.0.1-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] Attaching agents: []
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v3.1.2)
2023-08-09T16:40:26.550+05:30 INFO 21616 --- [main] c.h.demo.MyFirstAppApplication : Starting MyFirstAppApplication using Java 19-loom with PID 21616 (C:\Users\lokes\Downloads\my-first-app\my-first-app\target\classes started by lokesh in C:\Users\lokes\Downloads\my-first-app\my-first-app)
...
...
...
2023-08-09T16:40:28.085+05:30 INFO 21616 --- [main] c.h.demo.MyFirstAppApplication : Started MyFirstAppApplication in 2.091 seconds (process running for 2.486)
应用程序启动后,我们可以访问 hello world API,以验证一切是否正常工作。
curl -X GET https://:8080/hello
//Prints Hello, World!
8. 常见问题解答
8.1. 如何使用 Maven 创建新的 Spring Boot 应用程序?
使用 Maven 创建 Spring Boot 项目与创建任何其他普通 Web 项目类似。创建项目后,我们必须添加 pom.xml 以引用父 pom spring-boot-starter-parent 并创建/修改其他文件。
mvn archetype:generate -DgroupId=com.howtodoinjava.demo \
-DartifactId=my-first-app \
-DarchetypeArtifactId=maven-archetype-quickstart \
-DinteractiveMode=false
8.2. 如何使用 Spring Boot CLI 创建新的 Spring Boot 应用程序?
Spring Boot CLI 是一个命令行工具,旨在简化 Spring Boot 应用程序的开发。它提供了一种便捷的方式来快速创建、开发和测试 Spring Boot 项目,而无需设置复杂的项目结构或手动配置依赖项。
我们可以从官方 Spring Boot 网站下载 CLI,或使用诸如 SDKMAN 之类的包管理器进行安装。
安装 CLI 后,导航到要创建项目的目录,然后运行以下命令
spring init --dependencies=web \
--build=maven \
--groupId=com.howtodoinjava.demo \
--artifactId=my-first-app \
--name=MyFirstApp
它将从头开始创建一个 Spring Boot 应用程序,您可以打开项目并在您最喜欢的 IDE 中开始进行更改。
8.3. 如何在 IntelliJ 或其他 IDE 中创建 Spring Boot 应用程序?
在 IntelliJ 或其他 IDE 中创建新的 Spring Boot 项目与创建任何其他非 Spring Boot 应用程序类似。我们通过选择适当的 Maven 坐标和属性来创建一个普通的 Java 项目。

创建项目后,我们必须修改 pom.xml 以进行父 pom 引用,并导入其他 Spring Boot starter 模块和插件。
9. 总结
本 Spring Boot 教程介绍了该框架的最基本概念,包括特性、优点和缺点。然后我们讨论了启动简单的 Spring Boot 项目的不同方法,例如使用 Spring Initializr 门户、命令行和 IntelliJ 等 IDE。
我们开发了一个简单的 REST API,构建了项目并在嵌入式 Tomcat 服务器中部署了它。最后,我们测试了 API,完成了本 Spring Boot 入门教程。
祝您学习愉快!!
评论