前言
Spring Boot 4 正式发布,带来了对 JDK 21+ 的全面支持、虚拟线程、可观测性增强等新特性。本文将带你快速入门 Spring Boot 4,从零开始构建第一个 RESTful API 应用。
环境要求
Spring Boot 4 的最低环境要求:
| 组件 | 版本要求 |
|---|---|
| JDK | 21 或更高版本 |
| Spring Framework | 6.2+ |
| Spring Boot | 4.0+ |
| 构建工具 | Maven 3.6+ / Gradle 8.5+ |
# 检查 JDK 版本
java -version
# 检查 Maven 版本
mvn -version
创建第一个 Spring Boot 项目
方式一:使用 Spring Initializr
访问 Spring Initializr 创建项目:
Project: Maven
Language: Java
Spring Boot: 4.x
Group: com.example
Artifact: demo
Name: demo
Package name: com.example.demo
Packaging: Jar
Java: 21
Dependencies 添加:
- Spring Web
- Spring Boot DevTools
- Lombok
- Spring Boot Actuator
方式二:使用 IDEA 创建
File→New→Project- 选择
Spring Initializr - 选择 JDK 21+
- 选择依赖项
方式三:手动创建 Maven 项目
<!-- pom.xml -->
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>4.0.0</version>
<relativePath/>
</parent>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>Demo project for Spring Boot 4</description>
<properties>
<java.version>21</java.version>
</properties>
<dependencies>
<!-- Web starter -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Actuator 监控 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- Lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</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>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</project>
项目结构
标准的 Spring Boot 项目结构:
demo/
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── com/example/demo/
│ │ │ ├── DemoApplication.java # 启动类
│ │ │ ├── controller/ # 控制器层
│ │ │ ├── service/ # 服务层
│ │ │ ├── repository/ # 数据访问层
│ │ │ └── entity/ # 实体类
│ │ └── resources/
│ │ ├── application.yml # 配置文件
│ │ └── static/ # 静态资源
│ └── test/
│ └── java/
│ └── com/example/demo/
│ └── DemoApplicationTests.java # 测试类
├── pom.xml # Maven 配置
└── README.md
第一个 RESTful API
1. 启动类
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
@SpringBootApplication 注解解析:
@SpringBootConfiguration- 配置类@EnableAutoConfiguration- 启用自动配置@ComponentScan- 组件扫描
2. 创建 Controller
package com.example.demo.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/api")
public class HelloController {
@GetMapping("/hello")
public String hello() {
return "Hello, Spring Boot 4!";
}
@GetMapping("/greeting")
public Greeting greeting(String name) {
return new Greeting(name, "Hello, " + name + "!");
}
record Greeting(String name, String message) {}
}
3. 配置文件
# src/main/resources/application.yml
server:
port: 8080
spring:
application:
name: demo
management:
endpoints:
web:
exposure:
include: health,info,metrics
endpoint:
health:
show-details: always
4. 运行应用
# Maven 运行
mvn spring-boot:run
# 或者打包后运行
mvn clean package
java -jar target/demo-0.0.1-SNAPSHOT.jar
5. 测试接口
# 测试 hello 接口
curl http://localhost:8080/api/hello
# 测试 greeting 接口
curl http://localhost:8080/api/greeting?name=World
# 访问 Actuator 健康检查
curl http://localhost:8080/actuator/health
Spring Boot 4 新特性
1. JDK 21+ 支持
Spring Boot 4 要求最低 JDK 21 版本,充分利用新特性:
// 使用 Record 简化 DTO
public record UserDTO(Long id, String name, String email) {}
// 使用 Switch 表达式
public String getType(Type type) {
return switch (type) {
case A -> "Type A";
case B -> "Type B";
case C -> "Type C";
};
}
// 使用 Text Blocks
public String getSql() {
return """
SELECT * FROM users
WHERE status = 'ACTIVE'
""";
}
2. 虚拟线程支持
Spring Boot 4 支持虚拟线程,大幅提升并发性能:
# application.yml
spring:
threads:
virtual:
enabled: true
@RestController
@RequestMapping("/api/users")
public class UserController {
@GetMapping
public List<User> getUsers() {
// 虚拟线程处理高并发请求
return userService.findAll();
}
}
3. 可观测性增强
Spring Boot 4 增强了可观测性支持:
# application.yml
management:
tracing:
sampling:
probability: 1.0
metrics:
tags:
application: ${spring.application.name}
4. GraalVM Native Image
支持编译为原生镜像,启动更快、内存更小:
# 构建原生镜像
mvn -Pnative native:compile
# 运行原生镜像
./target/demo
常用注解速查
| 注解 | 说明 |
|---|---|
@SpringBootApplication | 启动类核心注解 |
@RestController | RESTful 控制器 |
@RequestMapping | 请求映射 |
@GetMapping | GET 请求映射 |
@PostMapping | POST 请求映射 |
@PutMapping | PUT 请求映射 |
@DeleteMapping | DELETE 请求映射 |
@PathVariable | 路径参数 |
@RequestParam | 查询参数 |
@RequestBody | 请求体 |
@Autowired | 依赖注入 |
@Service | 服务层注解 |
@Repository | 数据访问层注解 |
@Configuration | 配置类 |
@Bean | 定义 Bean |
@Value | 注入配置值 |
下一步学习
完成快速入门后,建议继续学习:
- 自动配置原理 - 理解 Spring Boot 核心机制
- 配置管理 - 掌握多环境配置
- Web 开发 - 深入学习 RESTful API
- 数据访问 - 集成 MyBatis/JPA
- 安全认证 - Spring Security 实战
总结
本文介绍了 Spring Boot 4 的快速入门:
- ✅ 环境要求:JDK 21+
- ✅ 项目创建:Initializr / IDEA / Maven
- ✅ 第一个 RESTful API
- ✅ Spring Boot 4 新特性:虚拟线程、可观测性、Native Image
- ✅ 常用注解速查
Spring Boot 4 让 Java 开发更加简洁高效。立即开始你的 Spring Boot 4 之旅吧!