Job
Spring Batch
에서 상위 개념인 Job
의 설정은 무엇이 있는지 살펴보자.
Configuring a Job
Job
은 Step
을 가지고 있으며, 구현하기 위해서는 JobRepository
가 필요하다. 그리고 JobBuilderFactory
를 통해서 아래와 같은 설정을 할 수 있다.
Restartability
: Batch 의Job
을 실행할 때 재시작과 관련된 동작을 설정한다.Intercepting Job Execution
:JobListener
를 통하여Job
실행 전/후 시점에 특정 동작을 설정한다.JobParametersValidator
:Runtime
시점에JobParameters
의 검증을 하는Validator
를 설정한다.Job
의 실행에 꼭 필요한Parameter
를 검증하는데 유용하다.
BatchConfigurer
BatchConfigurer
는 Job
을 설정하는 핵심 인터페이스다. Default 구현체는 아래와 같은 Bean
설정을 제공하고 있다. (단, Datasource
설정은 필요하다.)
Default Bean’s of BatchConfigurer
JobRepository
JobLauncher
JobRegistry
PlatformTransactionManager
JobBuilderFactory
StepBuilderFactory
BatchConfigurer
를 상속받아 직접 구현한다면, 위와 같은 Default Bean
들은 변경 및 구현 가능하다.
Default configuration
JobRepository
JobRepository
의 설정은 직접 구현하면 다음과 같은 설정을 구현 가능하다.
Datasource
설정TransactionManager
설정- Table 명의 Prefix 설정
In-Memory
설정- Non-standard Database Types 설정
JobLauncher
JobLauncher
의 기본 구현체는 SimpleJobLauncher
가 있다.
SimpleJobLauncher
는 기본으로 생성되는 JobExecution
을 Job
에게 전달하여 실행하고, 마지막으로 호출된 곳으로 JobExecution
반환한다.
아래와 같은 그림처럼 호출한 곳에서 마지막 응답을 최종적으로 받는 것을 확인해볼 수 있다.
하지만, 이와 같은 방법은 HTTP
요청에 대해 처리가 되면 다른 요청에 대한 처리가 지연이 발생할 수 있다. 그래서 비동기로 JobExecution
를 응답해주는 TaskExecutor
구현체가 필요하다.
TaskExecutor
는 비동기 방식으로 HTTP
요청에 대해 먼저 응답을 처리 후, Job
을 실행하여 처리를 한다.
여기까지 보면 Spring Batch
에서 Job
을 구성하는 기본적인 구현 방법은 이해가 된다. 세부적인 Job
설정들은 구현 단계에서 공식 레퍼런스를 참고하면서 학습할 예정이다.