![[SpringBatch 연재 09] 입맛에 맞는 배치 처리를 위한 Custom ItemReader/ItemWriter 구현방법 알아보기](https://devocean.sk.com/thumnail/2024/11/25/de4422be5fc2a9d400b19cf1e87f25e6a772ee7f8991e22a5d0cdb379ef570a3.png)
백엔드
[SpringBatch 연재 09] 입맛에 맞는 배치 처리를 위한 Custom ItemReader/ItemWriter 구현방법 알아보기
두줄요약
Spring Batch의 기본 Reader/Writer로 부족한 경우를 대비해 커스텀 구현 방법을 다뤘습니다. Querydsl 기반 페이징 Reader와 외부 서비스 호출 Writer를 통해 배치 유연성을 높였습니다.
핵심 내용
- Spring Batch의 기본 ItemReader/ItemWriter로 부족한 특수 케이스를 위해 커스텀 구현을 추가하는 방법
- Querydsl과 AbstractPagingItemReader를 활용한 QuerydslPagingItemReader 구현
- ItemWriter 인터페이스를 직접 구현해 외부 서비스 호출을 수행하는 CustomItemWriter 구성
구조와 흐름
- QuerydslPagingItemReader에서 EntityManagerFactory와 querySupplier를 받아 페이징 조회
- offset, limit, chunkSize를 이용한 페이지 단위 읽기
- 조회 결과를 detach 후 결과 목록에 적재해 배치 처리 안정성 확보
적용해볼 점
- alwaysReadFromZero 옵션으로 수정 중인 데이터의 누락 가능성 대응
- Builder 패턴으로 복잡한 Reader 생성 코드 단순화
- 스프링 빈 등록으로 CustomItemWriter를 싱글턴처럼 재사용
