프로그래밍/SpringBatch
[Spring Batch] jobExecution 안에 있는 ExecutionContext안에 데이터 저장하기. (jobExecution에 데이터 저장 해서 사용하기)
노잼인간이라불립니다
2022. 9. 27. 15:26
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();
}