프레임워크(Framework)/Spring

[Spring Batch] 스프링 배치 Job 이해하기 - Spring boot 2.x

잇트루 2023. 6. 23. 02:25
반응형
본 내용은 온라인 강의 사이트 인프런의 정수원 님의 강의 내용이 포함되어 있습니다.
스프링 배치 - Spring Boot 기반으로 개발하는 Spring Batch
 

스프링 배치 - Spring Boot 기반으로 개발하는 Spring Batch - 인프런 | 강의

초급에서 중~고급에 이르기까지 스프링 배치의 기본 개념부터 API 사용법과 내부 아키텍처 구조를 심도있게 다룹니다. 그리고 스프링 배치 각 기능의 흐름과 원리를 학습하게 되고 이를 바탕으

www.inflearn.com

 

 

Intro

스프링 배치의 도메인은 크게 두 가지로 나눌 수 있다.

  1. 배치를 특정 단계 또는 흐름에 따라 처리하고 구성하는 역할을 하는 도메인
    • Job, Step, Flow, Tasklet, …
  2. 배치의 단계마다 실행 정보나 상태 정보를 데이터베이스에 저장하기 위한 메타데이터 도메인
    • JobInstance, JobExecution, StepExecution, …

 

 

Job

스프링 배치의 계층 구조에서 가장 상위에 있는 개념으로 하나의 배치 작업 자체를 의미한다. Job Configuration을 통해 생성되는 객체 단위로 배치 작업을 어떻게 구성하고 실행할 것인지 설정하고 명세해 놓은 객체다.

  • Job을 구성하기 위한 최상위 인터페이스로 스프링 배치에서 기본적인 구현체를 제공한다.
  • Job은 여러 Step을 포함하고 있는 컨테이너로 반드시 한 개 이상의 Step으로 구성해야 한다.

 

 

Job 실행 구조

  • JobLauncher에서 JobParameters가 가지고 있는 인자를 받아 Job을 실행시킨다.
  • Job이 구동되면 execute() 메서드를 호출하여 Job이 가지고 있는 Step을 순차적으로 실행한다.
  • Job은 하나의 도메인 객체이고 여러 Step을 포함하는 컨테이너 역할을 한다.

 

 

Job 도메인 클래스 구조

Job

Job은 최상위 인터페이스로 실행 메서드인 execute()를 포함하고 있다.

 

AbstractJob

AbstractJob은 Job 인터페이스를 상속받은 추상 클래스로 다음과 같은 필드로 구성되어 있다.

  • name : Job의 이름
  • restartable : 재시작 여부(기본 값은 true)
  • JobRepository : 메타데이터 저장소
  • JobExecutionListener : Job 이벤트 리스너
  • JobParametersIncrementer : JobParameter 증가기
  • JobParametersValidator : JobParameter 검증기
  • SimpleStepHandler : Step 실행 핸들러

기본 구현체(SimpleJob과 FlowJob)

AbstractJob 추상 클래스를 상속받는 기본 구현체다. SimpleJob은 steps, FlowJob은 Flow 객체를 변수로 가지고 있다.

SimpleJob

  • 순차적으로 Step을 실행시키는 Job
  • 모든 Job에서 유용하게 사용할 수 있는 표준 기능을 갖고 있다.
  • 가장 보편적인 Job을 구성할 때 SimpleJob을 자동으로 생성한다.
  • Step1, Step2, Step3가 있을 때 Step1 → Step2 → Step3 순으로 순차적으로 실행한다.

 

FlowJob

  • 특정 조건과 흐름에 따라 Step을 구성하여 실행시키는 Job
  • Flow 객체를 실행시켜 작업을 진행한다.
  • Step1, Step2, Step3가 있을 때 Step1을 실행하고, Step2를 실행시킬지 Step3을 실행시킬지 결정하는 특정 조건 또는 Flow를 구성할 수 있다.
반응형