第1章 环境搭建与工具链准备
审批流动态配置系统的开发环境需要以JDK为核心运行时,以Maven/Gradle为构建管理工具,以Git作为版本协作基础,配合IDE和容器化部署方案。本章完整介绍从零搭建可复现开发环境所需的工具链版本、安装步骤、配置要点以及常见踩坑清单。
原理:为什么要精确定位工具链版本
审批流动态配置的核心是运行时元数据驱动,依赖Spring Boot 3.x的自动配置、Spring Data JPA和Activiti/Flowable引擎。低版本JDK(8/11)无法支持虚拟线程和密封类,高版本Maven(3.8+)对镜像和仓库策略有严格限制。使用统一版本可避免类冲突、注解扫描异常和数据库驱动不兼容。
实现流程(6步概览)
| 步骤 | 操作内容 | 产出物 |
|---|---|---|
| 1 | 安装JDK 17并配置JAVA_HOME | java -version 显示17.x |
| 2 | 安装Maven 3.9.x并设置镜像 | mvn -v 显示3.9.x;自定义~/.m2/settings.xml |
| 3 | 安装Git并配置ssh密钥 | git --version;ssh -T git@github.com 成功 |
| 4 | 安装IntelliJ IDEA + 插件(Lombok、JPA Buddy) | 可导入Maven项目并编译 |
| 5 | 通过Spring Initializr创建脚手架项目 | 包含spring-boot-starter-web, jpa, spring-security等依赖 |
| 6 | 初始化数据库脚本(MySQL/PostgreSQL),可选启动Docker Compose | 数据库连接成功,Docker容器正常运行 |
逐项安装与配置
1. JDK 17 LTS
推荐使用 Eclipse Temurin(Adoptium)发行版,许可证友好且长期支持。
# Ubuntu / Debian
sudo apt update
sudo apt install wget apt-transport-https gnupg -y
wget -qO - https://packages.adoptium.net/artifactory/deb-key.gpg | sudo gpg --dearmor -o /usr/share/keyrings/adoptium.gpg
echo "deb [signed-by=/usr/share/keyrings/adoptium.gpg] https://packages.adoptium.net/artifactory/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/adoptium.list
sudo apt update
sudo apt install temurin-17-jdk -y
# 验证
java -version
# 输出应为 openjdk version "17.0.10" 2024-01-16 LTS
brew install --cask temurin@17;Windows 下载 .msi 安装包后务必手动添加 JAVA_HOME 环境变量到 C:\Program Files\Eclipse Adoptium\jdk-17.0.10-hotspot\,并将其 bin 目录加入 PATH。
2. Maven 3.9.x
# 下载并解压
wget https://dlcdn.apache.org/maven/maven-3/3.9.8/binaries/apache-maven-3.9.8-bin.tar.gz
sudo tar xzf apache-maven-3.9.8-bin.tar.gz -C /opt
sudo ln -s /opt/apache-maven-3.9.8 /opt/maven
# 配置环境变量(写入 ~/.bashrc 或 /etc/profile.d/maven.sh)
export MAVEN_HOME=/opt/maven
export PATH=$MAVEN_HOME/bin:$PATH
# 验证
mvn -v
推荐配置阿里云镜像加速:~/.m2/settings.xml
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<mirrors>
<mirror>
<id>aliyunmaven</id>
<mirrorOf>central</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/central</url>
</mirror>
</mirrors>
</settings>
3. Git 2.40+
sudo apt install git -y
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
git config --global core.autocrlf input # Linux/macOS
git config --global core.editor vim
ssh-keygen -t ed25519 -C "your.email@example.com",将公钥 ~/.ssh/id_ed25519.pub 添加到 GitHub/GitLab。
4. IntelliJ IDEA 与插件
从 JetBrains 官网 下载 Community(免费)或 Ultimate(推荐,支持 Spring)。必装插件:Lombok(注解处理)、JPA Buddy(实体映射可视化)、SonarLint(代码质量)。导入 Maven 项目时注意设置 File → Settings → Build, Execution, Deployment → Build Tools → Maven 中的 Maven home path 指向 /opt/maven 或自定义路径。
5. Spring Boot 脚手架创建
使用 Maven 命令行或 Spring Initializr 网页生成标准项目结构。推荐命令行方式,便于自动化:
curl https://start.spring.io/starter.tgz \
-d type=maven-project \
-d language=java \
-d bootVersion=3.2.4 \
-d baseDir=approval-workflow \
-d groupId=com.example \
-d artifactId=approval-workflow \
-d packageName=com.example.approval \
-d dependencies=web,data-jpa,mysql,postgresql,security,actuator \
-d javaVersion=17 \
| tar xz
cd approval-workflow
mvn compile # 首次构建,下载依赖
生成的 pom.xml 自动包含所需起步依赖,后续章节将在此脚手架基础上添加审批流引擎配置。
6. 数据库初始化脚本(MySQL + PostgreSQL)
创建数据库和用户,后续章节的 JPA 实体会自动建表,但建议提前执行基础 DDL:
-- MySQL 8.0
CREATE DATABASE IF NOT EXISTS approval_flow DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'app_user'@'%' IDENTIFIED BY 'App@2024';
GRANT ALL PRIVILEGES ON approval_flow.* TO 'app_user'@'%';
FLUSH PRIVILEGES;
-- PostgreSQL 15
CREATE DATABASE approval_flow;
CREATE USER app_user WITH ENCRYPTED PASSWORD 'App@2024';
GRANT ALL PRIVILEGES ON DATABASE approval_flow TO app_user;
如果使用 Docker Compose 快速启动数据库:
# docker-compose.yml
version: '3.8'
services:
mysql:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: root123
MYSQL_DATABASE: approval_flow
ports:
- "3306:3306"
volumes:
- mysql_data:/var/lib/mysql
volumes:
mysql_data:
启动命令:docker compose up -d。
调试验证
运行下面的命令组合确认全部工具准备就绪:
java -version
mvn -version
git --version
# 测试 Maven 编译脚手架项目
cd approval-workflow
mvn clean compile -DskipTests # 应输出 BUILD SUCCESS
# 测试数据库连接(使用 Spring Boot 数据源验证)
mvn spring-boot:run -Dspring-boot.run.profiles=dev # 控制台无连接池异常即可
常见错误
| 错误现象 | 根因 | 解决方案 |
|---|---|---|
java.lang.UnsupportedClassVersionError | Maven 使用的 Java 版本低于 17 | 检查 JAVA_HOME 是否指向 JDK 17,mvn -v 中 Java version 必须为 17.x |
| Maven 构建超时 / 无法下载依赖 | 镜像未配置或镜像 URL 失效 | 确认 settings.xml 中 mirrorOf 正确,建议改用 https://maven.aliyun.com/repository/central |
| Git 提交时 CRLF 警告 | core.autocrlf 设置与操作系统不匹配 | Linux/macOS 设为 input,Windows 设为 true |
Spring Boot 启动报 Failed to configure DataSource | 数据库未运行或连接信息配置错误 | 检查 application-dev.yml 中的 spring.datasource.url 和端口,Docker 容器是否健康 |
| IDE Lombok 不生效 | 未启用注解处理 | IntelliJ:Settings → Build → Compiler → Annotation Processors → 勾选 Enable annotation processing |
性能与稳定性优化
- Maven 并行构建:在
~/.m2/settings.xml或pom.xml中添加-T 4参数(利用多核 CPU):mvn clean install -T 4。 - 本地 Maven 仓库缓存:首次构建后保留
~/.m2/repository,避免重复下载。可通过mvn dependency:resolve -DskipTests提前预热。 - Docker 资源限制:在
docker-compose.yml中设置deploy.resources.limits.memory: 512M防止数据库容器占用过多内存。 - IDE 内存调优:IntelliJ IDEA 编辑
Help → Edit Custom VM Options,增加-Xms1024m -Xmx2048m,避免大型项目卡顿。 - Spring Boot DevTools 热更新:加入依赖
spring-boot-devtools,修改实体或配置后自动重启,减少手动编译时间。
mvn clean verify → 使用 curl http://localhost:8080/actuator/health 查看应用健康状态。确保没有红色异常日志后再进入下一章。