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 安装与验证

  1. 下载 JDK 17:从 Adoptium 或 Oracle 官网下载对应操作系统的安装包。
  2. 配置环境变量:
    • 设置 JAVA_HOME 指向 JDK 安装目录。
    • 将 %JAVA_HOME%/bin 添加到 PATH。
  3. 验证安装:在终端执行以下命令:
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 安装与配置

  1. 下载 Maven:从 Apache Maven 官网 下载二进制包。
  2. 解压并配置:
    • 解压到本地目录,如 /opt/apache-maven-3.9.6。
    • 设置 MAVEN_HOME 并添加到 PATH。
  3. 验证安装:
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 创建

  1. 访问 start.spring.io。
  2. 填写项目元数据:
    • Project: Maven
    • Language: Java
    • Spring Boot: 3.2.5
    • Group: com.circuitbreaker
    • Artifact: demo-circuitbreaker
    • Packaging: Jar
    • Java: 17
  3. 添加依赖(Dependencies):
    • Spring Web — 提供 REST 接口能力。
    • Spring Boot Actuator — 健康检查与监控端点。
    • Resilience4j Spring Boot 3 — 降级熔断核心库。
    • Spring Boot DevTools — 开发热重载(可选)。
  4. 点击 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 环境搭建整体流程

下图展示了从零开始搭建降级熔断开发环境的完整流程:

降级熔断开发环境搭建流程 1. JDK 17 安装 2. Maven 3.9.6 3. 项目初始化 4. 依赖引入 5. 熔断配置 6. 编写服务 7. 启动 & 验证 8. 接口降级测试 💡 提示:Resilience4j 与 Spring Boot 3 集成时,需确保 AOP 依赖已引入,否则 @CircuitBreaker 注解不生效。

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 时,说明降级熔断开发环境已完全就绪,可以进入下一阶段的驱动开发实战。