简体中文 | English
Atom Archetype 是一个基于 Java 25 和 Spring Boot 4.1 的 Maven Archetype,用于生成采用领域驱动设计(DDD)的多模块项目。
生成结果是标准 Maven 工程。领域、应用和基础设施模块之间的依赖边界已经配置好,示例代码可以直接修改或删除。
2.1.0是当前稳定版,Archetype 开发和生成项目均使用 JDK 25。v2.0.0是 Java 21 版本的旧标签。- Maven Central
1.1.0属于 Spring Boot 3.5 旧架构。
以下快速开始直接使用 Maven Central 上的 2.1.0。
需要 JDK 25、Docker 和 Docker Compose v2。仓库及生成项目均提供 Maven Wrapper 3.9.16;如果使用系统 Maven,请使用 3.9.16 或更高版本。
mvn -B org.apache.maven.plugins:maven-archetype-plugin:3.4.1:generate \
-DarchetypeGroupId=io.github.archetom \
-DarchetypeArtifactId=atom-archetype \
-DarchetypeVersion=2.1.0 \
-DgroupId=com.example.orders \
-DartifactId=orders-service \
-Dpackage=com.example.orders \
-Dversion=1.0.0-SNAPSHOTcd orders-service
docker compose up -d mysql
sh ./mvnw clean install
ATOM_SECURITY_TRUSTED_HEADER_ENABLED=true \
sh ./mvnw -f start/pom.xml spring-boot:run -Dspring-boot.run.profiles=dev应用启动后可检查健康端点:
curl http://localhost:8080/actuator/health开发身份请求头、Redis 和生产配置见快速上手。
domain、application、api与基础设施模块之间的依赖边界。- 显式的
AuthenticatedCaller和TenantId,仓储与缓存按租户访问。 - MyBatis-Plus 3.5.17、Flyway 和 MySQL 26.7.0。
- Spring Security、SpringDoc OpenAPI 3.1.0 和统一的 HTTP 错误映射。
- 默认关闭的 Redis 8.10.0 缓存适配器,以及对应的空实现。
- 独立的命令事务与只读查询快照事务、事务提交后回调和 Testcontainers 集成测试。
- 具名分页响应、稳定并发错误,以及会自动编译和测试生成项目的 Archetype 回归测试。
业务 API 默认需要认证。开发身份请求头仅适用于显式启用的 dev、test 环境;生产环境应接入自己的身份系统。
| 模块 | 职责 |
|---|---|
api |
对外请求、响应、Facade 契约和调用者上下文 |
domain |
聚合、值对象、领域事件、仓储与领域服务端口 |
shared |
框架中立的结果与错误类型 |
application |
用例编排、命令/查询模板、事务回调和输出端口 |
infra/rest |
Spring MVC、Spring Security、OpenAPI 和错误映射 |
infra/persistence |
MyBatis-Plus、Flyway 和缓存适配器 |
infra/external |
第三方系统适配器 |
infra/security |
密码哈希等安全适配器 |
infra/facade |
Facade 契约实现 |
start |
Spring Boot 启动入口和运行时装配 |
domain 不依赖 application、api、shared 或任何 infra 模块。完整规则见架构设计。
模板位于 src/main/resources/archetype-resources/,元数据位于 src/main/resources/META-INF/maven/archetype-metadata.xml。
make install
make demo
cd target/generated-projects/atom-demo
sh ./mvnw compile
CI=true sh ./mvnw test # 需要 Docker修改模板后需要同时验证 Archetype 生成过程和生成后的 Maven Reactor。