Spring Framework
스프링 배치 SynchronizedItemStreamReader에 대해
공식 문서에 따르면, Spring Batch의 SynchronizedItemStreamReader는 ItemReader의 read() 메서드를 synchronized로 감싸는decorator 클래스로, 본래 thread-safe 하지 않은 ItemReader를 멀티스레드 환경에서도 안전하게 사용할 수 있도록 한다고 한다. 하지만 이미 처리한 아이템이 재처리되는 상황이 문제가 되는 경우, 해당 클래스를 사용하면 배치 잡은 재시작(restart)이 불가능한 구조가 된다고도 말한다. 설명 자체는 복잡하지 않지만 코드를 보면서 실제로 그런지 한 번 공부해보면 좋을 것 같아 정리를 해본다. * 글에서 작성한 코드는 spring batch 5.2.2를 기준으로 한다. SynchronizedItemStreamRead..