본문 바로가기
프로그래밍/SpringBatch

[Spring Batch] jobExecution 안에 있는 ExecutionContext안에 데이터 저장하기. (jobExecution에 데이터 저장 해서 사용하기)

by 노잼인간이라불립니다 2022. 9. 27.

1. Listener 클래스를 하나 선언한 후 

public class 클래스명 implements JobExecutionListener{
}

해준다.

 

2. 클래스 내부에 beforeJob을 오버라이드 해준다.

@Override
public void beforeJob(JobExecution jobExecution) {

	ExecutionContext executionContext = jobExecution.getExecutionContext();

	executionContext.put("키", 데이터가 선언된 변수);
}

 

3. 이렇게 넣어주면 된다.

 

4. 사용할 때에는 아래와 같이 @Value와 jobExecutionContext에서 키값을 이용해 데이터를 꺼내와 미리 저장해둔 데이터 자료구조에 맞는 타입과 변수명을 선언하고 사용하면된다.

@Value("#{jobExecutionContext['키']}")
List<String> 변수명;

 

5. 객체 타입인 경우에는 Serialize 오류가 발생한다. 객체에 implement Serializer를 해주면 사용할 수 있을 것 같다.

 

6. 생성된 리스너 객체를 잡의 리스너에 추가해 사용한다.

@Bean
public Job simpleJob(){
    return jobBuilderFactory.get("simpleJob")
            .start(simpleStep())
            .listener(생성한 listener 클래스 여기에 넣기)
            .build();
}