들어가기 전
앞에서 @EnableBatchProcessing으로 SpringBatch를 사용하기 위한 스프링빈을 등록했다. 실제로 Spring Batch로 프로세스를 진행하려면, Job을 만들고 JobLauncher를 통해 실행해야한다. 이번 포스팅에서는 Job의 기본적인 구성과 사용방법을 정리해보고자 한다.
Job의 사용방법
Job의 스프링 빈 등록
Job은 JobLauncher를 통해 실행된다. 이 때, Job 클래스가 아닌 다른 클래스에서 JobLauncher를 통해 실행된다. 따라서 다른 클래스에서 사용할 수 있도록 스프링 빈을 등록해야한다.
Step의 스프링 빈 등록
Step 역시 빈으로 등록해줘야한다. Job을 만들 때, Step을 주입해줘야하기 때문이다.
Job의 생성
Job을 생성하기 위해서는 JobBuilderFactory를 이용해서 만들어줘야한다. 이 때, get()을 이용해 Job 이름을 설정한다. start(), next() 메서드를 이용해 어떤 순서대로 잡이 실행될지를 정한다. 이후, build() 메서드를 사용하면 Job이 만들어진다.
Step의 생성
Step을 생성하기 위해서는 StepBuilderFactory를 이용한다. 이 때, tasklet()이라는 메서드를 이용해서 이 Step이 할 일을 정해준다. 쓰레드 관점에서 보면 Step은 쓰레드, tasklet은 Runnable 같은 느낌으로 이해를 하면 된다. taskLet을 구현해 준 후, build()를 하면 Step이 만들어진다.
Job의 모식도
위의 코드를 실행하면 다음과 같은 형태로 Job, Step, TaskLet이 생기게 된다. TaskLet을 Step이 주입받고, Job이 Step을 주입받는 형식으로 만들어진다.
Job은 위의 코드에서 볼 수 있듯이 여러 Step을 가질 수 있다. 위의 형식처럼 되어있는 Job을 SimpleJob이라고 한다.
정리
- Job, Step은 모두 스프링 빈을 등록해줘야 JobLauncher를 통해서 사용할 수 있다.
- Job은 내부적으로 여러 개의 Step을 가진다. 그리고 순차적으로 실행된다.
- Step은 내부적으로 해야할 일인 "taskLet" 객체를 가진다.
'Spring > Spring Batch' 카테고리의 다른 글
Spring Batch : SimpleJob의 Validator (0) | 2022.03.05 |
---|---|
Spring Batch : Simple Job의 Start / Next (0) | 2022.03.05 |
Spring Batch : DB 스키마 Domain 정보 (0) | 2022.03.04 |
Spring Batch : 메타 데이터 저장을 위한 DB 스키마 (0) | 2022.03.04 |
Spring Batch : Spring Batch 시작, @EnableBatchProcessing (0) | 2022.03.04 |