[스프링 배치] 잡 파라미터 접근 ChunkContext
- Coding/Spring Batch
- 2021. 9. 20.
반응형
728x90
반응형
ChunkContext
public class HelloWorld implements Tasklet {
private static final String HELLO_WORLD = "Hello, %s";
@Override
public RepeatStatus execute(StepContribution stepContribution, ChunkContext chunkContext) throws Exception {
/**
* StepContext 의 getStepExecutionContext 메소드가 존재
* : 잡의 ExecutionContext 의 현재 상태를 나타내는 Map<String, Object>를 반환한다.
* 현재 값에 접근할 수 있지만, 반환된 Map 을 변경하더라도 실제 내용이 바뀌지 않는다.
* 따라서 실제 ExecutionContext 에 반영되지않은 Map의 변경사항은 오류 발생시 사라진다.
*/
String name = (String) chunkContext.getStepContext() /* StepContext */
.getJobParameters()
.get("name");
/** 잡의 Execution Context 가져오기 */
// ExecutionContext jobContext = chunkContext.getStepContext() /* 스텝 */
// .getStepExecution()
// .getJobExecution() /* 잡 */
// .getExecutionContext();
/** 스텝의 Execution Context 가져오기 */
ExecutionContext jobContext = chunkContext.getStepContext() /* 스텝 */
.getStepExecution()
.getExecutionContext();
jobContext.put("user.name", name);
System.out.println(String.format(HELLO_WORLD, name));
return RepeatStatus.FINISHED;
}
}
HelloWorld 태스크릿이다. execute 메서드는 2개의 파라미터를 전달받는다.
- StepContribution
: 아직 커밋되지 않은 현재 트랜잭션에 대한 정보
- ChunkContext
: 실행 시점의 잡 상태 제공
Tasklet 내에서는 처리중인 청크와 관련된 정보를 갖고있으며, 해당 처크 정보는 스텝&잡과 관련된 정보도 갖고있다. chunkContext 에서 getStepContext() 메서드를 호출하여 JobParameters()를 호출할 수 있다.
반응형