출처
- 해당 포스트는 정수원 강사님의 스프링 배치 - Spring Boot 기반으로 개발하는 Spring Batch 강의를 바탕으로 작성 됐습니다.
목차
- Spring Batch - 14. 배치 초기화 설정 (application.properties)
- Spring Batch - 13. JobLauncher
- Spring Batch - 12. JobRepository
- Spring Batch - 11. ExecutionContext
- Spring Batch - 10. StepContribution
- Spring Batch - 09. StepExecution 와 STEP_EXECUTION 테이블
- Spring Batch - 08. Step
- Spring Batch - 07. JobExecution 와 JOB_EXECUTION 테이블
- Spring Batch - 06. JobParameter 와 JOB_EXECUTION_PARAM 테이블
- Spring Batch - 05. JobInstance 와 JOB_INSTANCE 테이블
- Spring Batch - 04. JobLauncher
- Spring Batch - 03. Job
- Spring Batch - 02. Batch 에서 사용하는 Table
- Spring Batch - 01. @EnableBatchProcessing
BatchAutoConfiguration
BatchAutoConfiguration 에서는 ApplicationRunner 의 일종인 JobLauncherApplicationRunner 를 생성한다.
BatchAutoConfiguration은 @EnableBatchProcessing 어노테이션을 사용하여 활성화됩니다.
BatchAutoConfiguration.java
public class BatchAutoConfiguration { |
JobLauncherApplicationRunner
Spring boot 에서 제공하는 ApplicationRunner 의 구현체 로 어플리케이션이 구동되자마자 실행되며 Bean 으로 등록된 모든 Job 을 실행시킨다.
JobLauncherApplicationRunner 는 JobLauncher 클래스를 이용해 JobRegistry 에 등록된 모든 Job을 실행시킵니다. 이러한 실행은 ApplicationContext 가 완전히 로드되고 실행된 후에 시작됩니다. 실행 시점에서 등록된 모든 Job을 가져와 실행하므로 Job 이름이 고유해야 합니다.
JobLauncherApplicationRunner 를 사용하려면 애플리케이션에서 @EnableBatchProcessing 을 사용하여 Spring Batch를 활성화하고, JobLauncherApplicationRunner 를 Bean 으로 등록해야 합니다. 그러면 Spring Boot 애플리케이션이 시작될 때 JobLauncherApplicationRunner가 실행되어 등록된 모든 Job을 자동으로 실행시키게 됩니다.
JobLauncherApplicationRunner는 Spring Batch Job 을 자동으로 실행하는 간단한 방법을 제공합니다. 그러나 Job 을 실행할 때 매개변수를 지정해야 하는 경우나, 실행 조건이나 Job 실행 전/후 처리를 추가해야 하는 경우에는 보다 유연한 방법으로 JobLauncher 를 직접 사용해야 합니다.
JobLauncherApplicationRunner 객체는 execute 라는 메소드를 이용해 내부에 가지고 있는 JobLauncher 객체를 이용해 Job 을 수행한다.
JobLauncherApplicationRunner.java
public class JobLauncherApplicationRunner implements ApplicationRunner, Ordered, ApplicationEventPublisherAware { |
BatchProperties
BatchProperties는 Spring Batch 의 설정을 담당하는 클래스
- Job 이름, 스키마 초기화 설정, 테이블 Prefix 등의 값을 설정할 수 있다.
- application.properties 또는 application.yml 파일에 설정한다.
BatchProperties.java
// application.properties or application.yml 에서 spring.batch 가 Spring Batch 의 Prefix 다. |
application.properties
배치 잡의 실행 여부를 설정
# Spring Boot 가 자동으로 실행시키는 Batch Job 을 실행시키도록 한다. |
배치 잡의 재시작 여부를 설정
# 기본이 true, 재시작을 허용한다. |
실행할 배치 잡의 이름을 지정
- 지정한 Job 만 실행하도록 설정한다.
- spring.batch.job.names: ${job.name.NONE}
# Hard Coding 방식 |
- 어플리케이션 실행시 Program arguments 로 job 이름 입력한다.
--job.name=helloJob
--job.name=helloJob.simpleJob
하나 이상의 job 을 실행할 경우 쉼표로 구분해서 입력 한다.
어플리케이션 실행시점에 Argument 로 넘겨서 Binding 되도록 한다.
배치 잡에서 허용하는 실패 횟수를 설정
# 배치 잡에서 허용하는 실패 횟수를 설정한다. default: 3 |
배치 잡에서 생성되는 메타 데이터 테이블 스키마 생성여부를 설정
spring.batch.jdbc.initialize-schema: always |
배치 잡에서 생성되는 메타 데이터 테이블 Prefix 를 설정한다.
spring.batch.jdbc.table-prefix: |