Spring Boot 4.1 中支持基于 MongoDB ... 笔记

Spring Boot 4.1 中支持基于 MongoDB 的 Spring Batch 作业及其他功能

Spring Batch 历史上依赖 SQL 数据库作为 JobRepository 来存储作业执行状态。这一要求即使对于主要使用 MongoDB 等 NoSQL 数据库的用户也长期存在。最近的 Spring Batch 版本已将 JobRepository 与 JDBC 解耦,Spring Boot 4.1 引入了对 MongoDB 的自动配置。这使得批处理元数据可以存储在 MongoDB 中,从而无需单独的 SQL 数据库。本文展示了一个完整的 Spring Batch 作业示例,该示例使用 MongoDB 作为其 JobRepository。示例通过 Docker Compose 设置 MongoDB 和 PostgreSQL。它定义了一个 ETL 作业,从 CSV 读取客户数据并写入 PostgreSQL 表。该过程通过一个两步作业实现:第一步用于重置目标表,第二步用于实际的数据传输。数据传输步骤使用 FlatFileItemReader、一个简单的处理器以及 JdbcBatchItemWriter。该基于 chunk 的步骤已配置容错和重试机制。随后运行应用程序,所有作业执行详情均记录在 MongoDB 中。通过集成 OpenTelemetry 和 Grafana 增强了可观测性。本文还探讨了使 Spring Batch 能够与 GraalVM 原生镜像协同工作,并引入了懒加载数据源连接以优化性能。关键要点是,Spring Batch 现已与 MongoDB 无缝集成,允许开发人员在不妥协的前提下使用其首选数据库。