Skip to content

技术栈与架构选型

ArchForge 采用现代技术,每项选择都有清晰的考量。

运行时

技术版本选型理由
JDK25 (Azul Zulu)ScopedValue、结构化并发、模式匹配、Stream Gatherers、虚拟线程
Spring Boot4.1.0Spring Framework 7、Jakarta EE、Observation API、ProblemDetail (RFC 9457)
Gradle9.5.1配置缓存、Kotlin DSL、java-platform 实现 BOM

数据库与存储

技术版本选型理由
PostgreSQL17GENERATED ALWAYS AS IDENTITY、高级 JSON 支持、行级安全
Flyway12.4.0版本化的数据库结构迁移,PostgreSQL 方言模块
Redis7会话缓存、限流、分布式锁
Dynamic Datasource4.5.0主从路由、@DS 注解、JPA 组代理
AWS S3 SDK2.x文件存储抽象(开发环境配合 RustFS 使用)

ORM 与查询

技术版本选型理由
Spring Data JPA4.xRepository 抽象、Specification 动态查询
Hibernate Static Metamodel7.x编译期类型安全的字段引用(Entity_ 类)
SafeExpr / AliasExpr--基于 SingularAttribute 的类型安全 JPQL 表达式构建器
JPA Criteria API3.2使用 Metamodel 构造查询,避免原始 JPQL 字符串
QueryHelp--注解驱动的列表/搜索动态谓词构建器

Web 与 API

技术版本选型理由
Sa-Token1.45.0双 STP 类型:StpAdminUtil(管理端)与 StpWebUtil(C 端)。不是 JWT / Spring Security
SpringDoc OpenAPI3.0.x自动生成 Swagger UI、Schema 校验
Jackson(Boot 管理)JSON 序列化、自定义转换器、敏感数据脱敏
MapStruct1.6编译期类型安全的 DTO 映射,零反射

可观测性

技术版本选型理由
Micrometer(Boot 管理)统一指标 API,Observation 整合指标+链路追踪+日志
OpenTelemetry1.62.0分布式链路追踪、OTLP 导出
Log4j2(Boot 管理)异步日志、结构化输出、Spring Profile 支持
Spring Actuator4.1健康检查、Prometheus 指标端点

代码质量

技术版本选型理由
Spotless8.4构建时强制执行 Google Java Style (AOSP)
google-java-format1.35团队统一的代码格式
JSpecify1.0标准空安全注解(@NullMarked、@Nullable)
Lombok1.18.46减少样板代码(@Data、@Builder、@RequiredArgsConstructor)

测试

技术版本选型理由
JUnit6.0 (Jupiter)现代断言、参数化测试
Spock2.4 (Groovy 5)BDD 风格规范、数据驱动测试、Mock
Testcontainers2.0开发/测试环境自动配置 PostgreSQL、Redis、RustFS
RestClient(Spring 内置)针对运行中应用的集成测试

前端

类别技术版本用途
框架Vue3.5响应式 UI 框架
构建Vite8新一代前端构建工具
语言TypeScript6类型安全的 JavaScript
UI 库Element Plus2.13企业级 UI 组件
状态管理Pinia3Vue 3 状态管理
路由Vue Router5SPA 路由
CSSTailwindCSS4原子化 CSS 框架
HTTPAxios--带拦截器的 HTTP 客户端
国际化vue-i18n--多语言支持
基础模板vue-pure-admin--企业级后台管理模板
开发端口8848--代理到管理端 API :8080

前端(C 端)

类别技术版本用途
框架Next.js16.xReact 框架,App Router
UIReact19.x组件库
语言TypeScript5.8.x类型安全的 JavaScript
样式Tailwind CSS4.x原子化 CSS
组件shadcn/ui + lucide-react--无头 UI 原语与图标
国际化next-intl--英文 / 中文多语言
认证Sa-Token(StpWebUtil1.45.0C 端 Token 认证
Markdownreact-markdown + remark-gfm + rehype-highlight--文章内容渲染
E2E 测试Playwright--端到端测试
构建Turborepo + pnpm workspaces--Monorepo 编排
开发端口3000--请求 Web API :8081

部署

技术选型理由
Docker + jlink最小化 JRE(约 60MB,完整 JDK 约 300MB)
Project Leyden CDSAOT 缓存加速启动
Liberica NIK 25Native Image 选项,实现即时启动
Nginx反向代理、静态文件服务、SSL 终止
./archforge开发者 CLI,覆盖 init / infra / db / up

使用的 JDK 25 特性

特性使用位置收益
ScopedValueScopedValueContext替代 ThreadLocal,虚拟线程安全,自动清理
结构化并发ServerMonitorService并行采集系统信息,生命周期可控
模式匹配 switchJsonUtil、ErrorHandler、ResultValueWrapper更简洁的类型分派,穷举检查
Stream GatherersCollectionUtils.partition()内置窗口操作,无需外部依赖
虚拟线程application.yaml可扩展的 I/O 密集型并发
JSpecify 空安全包级别 @NullMarked编译期空值检查

相关页面

Released under the MIT License.