4. 环境搭建:JDK、Maven/Gradle、Spring Boot 项目初始化、依赖引入
降级熔断作业的驱动开发与接口调用实战,需要一个标准、可复现的 Java 后端环境。本章将引导你完成从 JDK 安装到 Spring Boot 项目初始化的全过程,并引入降级熔断所需的核心依赖。
4.1 环境版本清单
为避免版本兼容问题,建议统一使用下表所列的版本组合:
| 组件 | 推荐版本 | 说明 |
|---|---|---|
| JDK | 17 (LTS) | 长期支持版,支持虚拟线程与密封类 |
| Maven | 3.9.6 | 构建与依赖管理 |
| Gradle | 8.7 | 可选替代方案,本课程以 Maven 为主 |
| Spring Boot | 3.2.5 | 最新稳定版,内置 Resilience4j 支持 |
| Resilience4j | 2.2.0 | 降级熔断核心库 |
版本选择建议:JDK 17 + Spring Boot 3.x 是当前主流技术栈,Resilience4j 2.x 已完全适配 Spring Boot 3,无需额外适配层。
4.2 JDK 安装与验证
- 下载 JDK 17:从 Adoptium 或 Oracle 官网下载对应操作系统的安装包。
- 配置环境变量:
- 设置
JAVA_HOME指向 JDK 安装目录。 - 将
%JAVA_HOME%/bin添加到PATH。
- 设置
- 验证安装:在终端执行以下命令:
java -version
# 输出示例:
# openjdk version "17.0.10" 2024-01-16 LTS
# OpenJDK Runtime Environment (build 17.0.10+7)
# OpenJDK 64-Bit Server VM (build 17.0.10+7, mixed mode)
javac -version
# 输出示例:javac 17.0.10
4.3 Maven 安装与配置
- 下载 Maven:从 Apache Maven 官网 下载二进制包。
- 解压并配置:
- 解压到本地目录,如
/opt/apache-maven-3.9.6。 - 设置
MAVEN_HOME并添加到PATH。
- 解压到本地目录,如
- 验证安装:
mvn -version
# 输出示例:
# Apache Maven 3.9.6 (bc0240f3c744dd6b6ec2920b3cd08dcc295161ae)
# Maven home: /opt/apache-maven-3.9.6
# Java version: 17.0.10, vendor: Eclipse Adoptium, runtime: /opt/jdk-17.0.10
国内镜像加速:在
~/.m2/settings.xml 中配置阿里云镜像,可大幅提升依赖下载速度。
<mirrors>
<mirror>
<id>aliyunmaven</id>
<mirrorOf>central</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/central</url>
</mirror>
</mirrors>
4.4 Spring Boot 项目初始化
推荐使用 Spring Initializr 快速生成项目骨架。你可以通过 Web 界面或 IDE 内置工具完成初始化。
4.4.1 通过 Spring Initializr Web 创建
- 访问 start.spring.io。
- 填写项目元数据:
- Project: Maven
- Language: Java
- Spring Boot: 3.2.5
- Group: com.circuitbreaker
- Artifact: demo-circuitbreaker
- Packaging: Jar
- Java: 17
- 添加依赖(Dependencies):
- Spring Web — 提供 REST 接口能力。
- Spring Boot Actuator — 健康检查与监控端点。
- Resilience4j Spring Boot 3 — 降级熔断核心库。
- Spring Boot DevTools — 开发热重载(可选)。
- 点击 Generate 下载项目压缩包,解压后用 IDE 打开。
4.4.2 手动创建项目目录结构
如果你更倾向于手动搭建,可以按以下结构创建目录:
demo-circuitbreaker/
├── pom.xml
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── com/circuitbreaker/demo/
│ │ │ ├── DemoApplication.java
│ │ │ ├── controller/
│ │ │ ├── service/
│ │ │ └── config/
│ │ └── resources/
│ │ ├── application.yml
│ │ └── static/
│ └── test/
│ └── java/
│ └── com/circuitbreaker/demo/
│ └── DemoApplicationTests.java
4.5 核心依赖引入(pom.xml)
以下是一个完整的 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>3.2.5</version>
<relativePath/>
</parent>
<groupId>com.circuitbreaker</groupId>
<artifactId>demo-circuitbreaker</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo-circuitbreaker</name>
<description>降级熔断作业驱动开发实战</description>
<properties>
<java.version>17</java.version>
<resilience4j.version>2.2.0</resilience4j.version>
</properties>
<dependencies>
<!-- Spring Web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Resilience4j 熔断器 -->
<dependency>
<groupId>io.github.resilience4j</groupId>
<artifactId>resilience4j-spring-boot3</artifactId>
<version>${resilience4j.version}</version>
</dependency>
<!-- Resilience4j 注解支持 -->
<dependency>
<groupId>io.github.resilience4j</groupId>
<artifactId>resilience4j-annotations</artifactId>
<version>${resilience4j.version}</version>
</dependency>
<!-- Actuator 监控 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- AOP 支持(Resilience4j 注解需要) -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</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>
注意:Resilience4j 的
spring-boot3 模块与 Spring Boot 2.x 版本不兼容。请确保使用 resilience4j-spring-boot3 而非 resilience4j-spring-boot2。
4.6 环境搭建整体流程
下图展示了从零开始搭建降级熔断开发环境的完整流程:
4.7 验证环境是否就绪
完成上述步骤后,执行以下命令验证环境是否正常工作:
# 编译项目
mvn clean compile
# 启动 Spring Boot 应用
mvn spring-boot:run
# 访问健康检查端点
curl http://localhost:8080/actuator/health
# 预期返回:
# {"status":"UP"}
环境就绪标志:当控制台输出
Started DemoApplication in X.XXX seconds 且 /actuator/health 返回 UP 时,说明降级熔断开发环境已完全就绪,可以进入下一阶段的驱动开发实战。