본문 바로가기

STUDY/스프링 배치

3. 스프링 배치: Job, JobParameter, JobInstance, JobExecution

Job

 

Job이란 개념적으로 스프링 배치가 수행할 하나의 작업 그 차체를 의미한다. "일별 판매 정산" 일괄처리 작업이 있다면 "일별 판매 정산"이 Job으로 만들어지는 것이다. Spring Batch의 객체로써 보면, 위와같은 모습이다. 이름, 재시작 가능여부, JobParametersIncremeter, JobParametersValidator를 가져올 수 있는 메소드. 그리고 Job을 실행할 메소드를 기본적으로 가지고 있다. 하위에는 이를 구현한 여러 종류의 Job들이 있다.

 

 


JobInstance

 

JobInstance란 Job에 JobParameters가 전달되어 만들어지는 실행가능한 논리적 작업 단위 객체이다. JobInstance에 실제 내부 동작을 위한 필드나 메소드는 존재하지않고, Job의 이름과 각각의 JobInstance를 구분하기 위한 Id만이 존재하기 때문에 논리적 작업 단위라고 표현하였다. 새로운 JobParameter로 Job을 실행하면 새로운 JobInstance가 만들어지고, 기존의 JobParameter로 Job을 실행하면 기존의 JobInstance를 사용한다.

 

 


JobParameter

 

JobParameter란 job을 실행할 때 전달되는 값이다. Job 객체와 JobParameter가 만나서 실행가능한 작업 단위인 JobInstance가 만들어진다. JobParameter에는 파라미터로 전달될 객체와, 그 타입, 그리고 JobInstance의 key를 만들때 해당 파라미터를 사용할 지 여부가 들어있다. 파라미터 타입은 STRING, DATE, LONG, DOUBLE 4개가 정의되어있다.

 

 


JobExecution

 

JobExecution은 Job과 JobParameters로 만들어진 JobInstance의 실제 실행을 나타내는 객체이다. 어떠한 JobParameters가 전달되었고, 기준이되는 JobInstance가 무엇인지를 가지고있다. 그리고 작업 실행중 유지/공유되는 정보인 ExecutionContext를 가지고있다. 실행중/종료시 상태, 실패시 발생한 에러, 생성/시작/종로/마지막수정 시간 정보도 가지고 있다. Job이 isRepeatable 하고, 이전의 JobInstance의 실행 JobExecution이 실패했다면, 동일 JobInstance로 새로운 JobExecution이 생길 수 있다.

 

 


실습

 

 

728x90