[java] 자바 스프링 배치(Java Spring Batch)
자바 스프링 배치는 대량의 데이터를 처리하는 데 사용되는 오픈 소스 프레임워크입니다. 이를 통해 반복적인 작업을 효율적으로 처리할 수 있으며, 데이터 마이그레이션, 보고서 생성, 데이터 정제 등 다양한 작업에 적용할 수 있습니다.
스프링 배치의 구성 요소
스프링 배치는 세 가지 주요 구성 요소로 구성됩니다.
- Job: 스프링 배치의 실행 단위이며 여러 단계의 작업을 포함합니다.
- Step: Job을 구성하는 단위로, 단일 작업 또는 단계로 이루어집니다.
- ItemReader, ItemProcessor, ItemWriter: 스프링 배치에서 사용되는 세 가지 핵심 인터페이스로, 데이터를 읽고 처리하며 출력합니다.
스프링 배치의 작동 원리
스프링 배치의 작동 원리는 다음과 같습니다.
- JobLauncher에게 Job을 실행할 것을 지시합니다.
- JobLauncher는 JobRepository와 상호 작용하여 실행 가능한 JobInstance를 가져옵니다.
- JobRepository는 JobInstance를 생성하고 JobExecution을 추적합니다.
- JobExecution은 한 번의 실행을 나타내며 StepExecution 단위로 이루어집니다.
- 각 StepExecution은 ItemReader, ItemProcessor, ItemWriter를 실행하여 데이터를 처리합니다.
- JobExecution이 완료되면 JobRepository에 결과를 저장합니다.
스프링 배치 설정 예시
아래는 스프링 배치를 설정하는 예시입니다.
@Configuration
@EnableBatchProcessing
public class BatchConfig {
@Autowired
private JobBuilderFactory jobBuilderFactory;
@Autowired
private StepBuilderFactory stepBuilderFactory;
@Bean
public ItemReader<String> itemReader() {
// ItemReader 구현체를 반환합니다.
}
@Bean
public ItemProcessor<String, String> itemProcessor() {
// ItemProcessor 구현체를 반환합니다.
}
@Bean
public ItemWriter<String> itemWriter() {
// ItemWriter 구현체를 반환합니다.
}
@Bean
public Step step(ItemReader<String> itemReader, ItemProcessor<String, String> itemProcessor, ItemWriter<String> itemWriter) {
return stepBuilderFactory.get("step")
.<String, String>chunk(10)
.reader(itemReader)
.processor(itemProcessor)
.writer(itemWriter)
.build();
}
@Bean
public Job job(Step step) {
return jobBuilderFactory.get("job")
.incrementer(new RunIdIncrementer())
.flow(step)
.end()
.build();
}
}
이 예시에서는 ItemReader, ItemProcessor, ItemWriter를 정의하고, 이들을 사용하여 Step을 생성합니다. 이 후에 Job을 생성하고 실행하는 방법을 설정합니다.
결론
자바 스프링 배치는 대량의 데이터 처리를 효율적으로 수행하고자 할 때 유용한 도구입니다. 스프링 배치의 구성 요소와 작동 원리를 이해하고 설정하는 방법을 알아보았습니다. 추가적인 자세한 내용은 스프링 배치 공식 문서를 참조하시기 바랍니다.
참고문서: