Clean Code that Works.

음 몇시간 또 삽질을 했다 -ㅅ-;;

스프링 배치 공부겸 해서 간단한 샘플을 만들어 보고 돌리는 중이었는데.
이놈의 배치가 계속 실행 되는 것이었다.

한번만 실행되고 멈추면 좋겠구만 -_-;;

그래서 배치 어드민 샘플, 배치 샘플 뒤져가며 보았는데..
안됬었다. ㅠㅠ

하여 여기저기 해결책을 찾아 보다가..

소스를 비교해 보니..

내가 만든 테스트용 ItemReader 는 계속 return "test"; 해서 리턴 값이 있었다.
근대 샘플 소스는 처리를 하고 나면 return null을 하는 것이었다.

응..?

그러니까,
배치 잡이 ItemReader에서 읽을 값이 없어야 배치 실행을 끝내고 종료를 하는데
계속 스트링을 return 하고 있어서
계속 잡이 실행 되는 것이었다.

허...

이런것이었군. ㅠ

추가 하면..
CHUNK 단위로 배치를 실행 하는데,
ItemReader에 처리 해야 할 데이터가 남아 있으면 당연히 배치가 계속 동작하는게 맞는 것 같다.
reader에서 어느 수 많큼(commit-interval="10") 읽어 들이고
그 후에 writer에 쓰고, 근데 reader에 읽어 들일 데이터들이 계속있으니
read & write가 반복 되는 구조.

한번만 더 생각해보면 알 수 있는 문제 인데 이걸~
아우~