개요
Spring Boot 4.1.0에 추가된 Spring Batch MongoDB 지원 기능을 알아보자.
Spring Batch는 MongoDB가 개발되기 전부터 있던 프로젝트로, Spring Batch 작업의 상태틀 저장할 장소로 SQL 데이터메이스가 있다는 것을 전제로 개발이 되었다. 그래서 현재까지는 SQL 데이터베이스를 사용하지 않는 Spring Batch를 사용한 프로젝트도 SQL 데이터베이스를 연동하여 사용하거나, 별도의 SQL 데이터베이스가 없다면 H2를 사용하여 작업의 상태 정보를 저장해야 했다. 또한 Spring Boot를 사용하는 경우 SQL관련 라이브러리가 추가되면 자동으로 SQL 데이터베이스를 사용하려는 Bean을 생성했다.
Spring Batch 6에서 MongoDB(https://docs.spring.io/spring-batch/reference/whatsnew.html#batch-infrastrucutre-configuration-improvements)를 지원하는 MongoJobRepository가 추가되었고, Spring Boot 4.1.0에서 spring-boot-batch-data-mongo를(https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-4.1-Release-Notes#mongodb-support-for-spring-batch) 사용하여 MongoDB에 작업의 상태를 저장하는 기능이 추가되었다.
이제 Spring Boot 4.1.0에 추가된 기술을 사용하여 SQL 데이터베이스를 사용하지 않고 MongoDB를 기반으로 개발하는 방법에 대하여 알아보자
Getting Started
프로젝트 생성
spring-boot-batch-data-mongo를 사용해서 Spring Batch 프로젝트를 생성한다.
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-batch-mongodb'
testImplementation 'org.springframework.boot:spring-boot-starter-batch-mongodb-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}
Application Properties
MongoDB 접속 설정과 상태를 저장하는 컬렉션을 추가하도록 설정을 추가한다.
spring:
mongodb:
uri: mongodb://......
batch:
data:
mongodb:
schema:
initialize: true
Job 구현
문자열을 대문자로 변환하는 간단한 Job을 구현하여 MongoDB에 Job정보가 저장되는지 확인한다.
@Configuration
class MongoDBJobConfig {
private final JobRepository jobRepository;
MongoDBJobConfig(JobRepository jobRepository) {
this.jobRepository = jobRepository;
}
@Bean
Job mongoDBJob() {
return new JobBuilder("mongoDBJob", this.jobRepository).start(step()).build();
}
Step step() {
return new StepBuilder("step", this.jobRepository)
<String, String>chunk(10)
.reader(new ListItemReader<>(List.of("a", "b", "c", "d"))
.processor((i) -> i.toUpperCase())
.writer((c) -> System.out.println(c.getItems())
.build();
}
}
실행
2026-08-16T11:08:10.634+09:00 INFO 12123 --- [spring-batch-mongo] [main] o.s.batch.core.step.AbstractStep : Step: [step] [A, B, C, D]
2026-08-16T11:08:10.651+09:00 INFO 12123 --- [spring-batch-mongo] [main] o.s.batch.core.step.AbstractStep : Step: [step] executed in 26ms
MongoDB 확인
MongoDB에 아래와 같이 SQL 데이터베이스와 비슷하게 Spring Batch에 상태를 저장하는 컬렉션이 추가된 것을 볼 수 있다.
컬렉션의 데이터를 확인해보면 위에서 실행한 Job들의 정보도 확인할 수 있다.
BATCH_JOB_EXECUTION
BATCH_JOB_INSTANCE
BATCH_SEQUENCES
BATCH_STEP_EXECUTION
마치며
MongoDB를 메인 저장소로 사용하는 프로젝트가 있다면, 위 방법을 사용하여 Spring Batch 작업 정보를 MongoDB로 전환하여 사용해 보자. 또한 Spring Boot 4.1에는 새롭게 추가된 재미있는 기능들이 많은데 다른 내용도 추가로 포스팅해 보겠다.
'dev > spring' 카테고리의 다른 글
| Spring Boot 4 - Jackson JsonView 사용하기 (0) | 2026.01.10 |
|---|---|
| RestTestClient를 사용하여 Spring Rest API 테스트 작성하기 (0) | 2026.01.05 |
| Spring Boot 4 모듈화 (0) | 2025.12.11 |
| Spring - Path Prefix (0) | 2025.08.18 |
| Spring Framework 7.0.0 API Versioning (0) | 2025.07.31 |