본문 바로가기

강의/스프링배치

스프링배치 도메인 이해 - StepContribution

청크 프로세스: 큰 범위의 청크 프로세스는 Tasklet을 포함한다.

청크 프로세스를 처리하는 전용 Tasklet이 있는데 이것이 청크 프로세스를 실행한다.

우리가 사용하는 Tasklet도 Chunk 기반이다.

Stepcontribution 기능 중 독특한 것은 Batch status 값과 종료 코드인 ExistStatus 값을 가지는데

그 중 종료 코드인 ExistStatus 값을 변경할 수 있는 권한이 있다.

 

 

Step Contribution, Step Execution 흐름 확인


1. taskletstep이 실행되면 stepExecution 객체를 생성한다.

2. stepExecution이 내부적으로 stepcontribution을 생성한다.

3. taskletStep이 chunkOrientedTasklet (tasklet을 구현한 구현체, chunk 기반 프로세스를 처리할 수 있는 전용 프로세스) 우리는 우리가 구현한 tasklet을 호출한다고 보면 된다.

4. 청크 기반 프로세스는 Itemreader, itemprocessor, itemwriter이런 것들을 사용해서 처리한다.

 - item을 읽으면 readcount가 올라가고 예외가 발생하면 readSkipCount가 올라가고 계속해서 진행할 수 있도록 도와준다.

 - itemprocessor도 itemreader로 부터 전달받은 item 중에서 내용을 가공하거나, 다음 내용으로 보내지 않고 filtering 하는 기능이 있는데 , 몇개를 filter했는지 filterCount 가 있다.

 - itemWriter도 processor로 부터 전달 받은 item을 몇번 사용했는지 (writeCount) 몇번skip 했는지가 (writeSkipCount) stepContribution에 저장이 된다.

5. 과정이 종료되고 마지막 시점에 stepContribution에 있는 저장된 값들을 stepExecution에 apply 메서드를 통해 적용시키는 과정이 있다.