[스프링 배치] 잡 파라미터 접근 ChunkContext

반응형
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()를 호출할 수 있다.

 

 

 

 

반응형

Designed by JB FACTORY