[Spring] Spring Batch Job 동작 과정

박성우·2023년 8월 27일
0

Spring

목록 보기
8/10

커맨드 라인을 이용하여 Spring Batch의 Job이 실행되기까지 일반적인 동작을 간단하게 알아보자.

  1. spring-autocofigure-metadata.properties 파일에 등록되어 있는 BatchAutoConfiguration 실행

  2. BatchAutoConfiguration에 Bean으로 등록되어 있는 JobLauncherApplicationRunner 생성 (@EnableBatchProcessing 및 DefaultBatchConfigration를 사용할 경우 Bean 생성 불가)
    & properties에 등록된 job.name 을 읽어와서 변수에 저장 (Job이 여러 개일 경우 실행하고자 하는 Job 이름 지정 필수)

문서에 의하면, "Auto-configuration for Spring Batch. If a single job is found in the context, it will be executed on startup.
Disable this behavior with spring.batch.job.enabled=false."

해당 JobLauncherApplicationRunner 및 Bean을 생성하지 않기 위해서는 spring.batch.job.enabled 속성을 false로 두면 된다. (기본값은 true)

  1. 애플리케이션 실행 시 SpringBoot 구동 인터페이스인 ApplicationRunner를 구현하고 있는 JobLauncherApplicationRunner의 run() 메소드 호출

  2. 인자로 받은 값(args)이 존재할 경우 해당 값을 통해 Job와 JobParameters 불러오기

인자로 받은 값을 문자열로 파싱하고 해당 문자열로 Job와 JobParameters를 찾는다. Job와 같은 경우 등록되어 있는 모든 Job으로 부터 문자열 매칭을 통해 찾아낸다.

  1. Job와 JobParameters 와 함께 execute() 메소드 호출 및 결과적으로 JobLauncher의 run() 메소드 호출

  2. JobLauncher 인터페이스의 구현체인 SimpleJobLauncher의 run() 메소드 호출

  3. SimpleJobLauncher는 내부적으로 TaskExecutor 인터페이스의 execute() 메소드를 통해 Job을 실행

일반적인 동작은 위와 같지만 @EnableBatchProcessing 및 DefaultBatchConfigration와 함께 Runner를 구현해서 사용하거나, JobLauncher를 직접적으로 호출해서 Job을 실행하는 등 Job을 실행할 수 있는 방법은 다양하다.


Reference

https://docs.spring.io/spring-boot/docs/1.2.0.RC1/api/org/springframework/boot/autoconfigure/batch/BatchAutoConfiguration.html
https://zzang9ha.tistory.com/431

profile
Backend Developer

0개의 댓글