[java] 자바 스프링 부트 배치 작업 처리 방법

이번 포스트에서는 자바 스프링 부트를 사용하여 배치 작업을 처리하는 방법에 대해 알아보겠습니다.

1. 스프링 부트 배치 소개

스프링 부트는 배치 처리를 위한 Spring Batch 모듈을 제공합니다. Spring Batch는 대용량 데이터 처리와 ETL(extract, transform, load) 작업을 위한 표준화된 방법을 제공하며, 성능 향상을 위한 기능들을 포함하고 있습니다.

2. 배치 작업을 위한 설정

먼저, 스프링 부트 프로젝트를 생성하고 Maven 또는 Gradle을 사용하여 Spring Batch 의존성을 추가합니다. 그 후, JobBuilderFactoryStepBuilderFactory를 사용하여 Batch Job을 정의하고, ItemReader, ItemProcessor, ItemWriter를 정의하여 데이터 처리 로직을 구현합니다.

@Configuration
@EnableBatchProcessing
public class BatchConfiguration {

    @Autowired
    public JobBuilderFactory jobBuilderFactory;

    @Autowired
    public StepBuilderFactory stepBuilderFactory;

    @Bean
    public ItemReader<MyInput> reader() {
        // 데이터를 읽어올 ItemReader 정의
    }

    @Bean
    public ItemProcessor<MyInput, MyOutput> processor() {
        // 데이터를 가공할 ItemProcessor 정의
    }

    @Bean
    public ItemWriter<MyOutput> writer() {
        // 데이터를 저장할 ItemWriter 정의
    }

    @Bean
    public Step step1() {
        return stepBuilderFactory.get("step1")
                .<MyInput, MyOutput>chunk(10)
                .reader(reader())
                .processor(processor())
                .writer(writer())
                .build();
    }

    @Bean
    public Job importUserJob(JobCompletionNotificationListener listener, Step step1) {
        return jobBuilderFactory.get("importUserJob")
                .incrementer(new RunIdIncrementer())
                .listener(listener)
                .flow(step1)
                .end()
                .build();
    }
}

3. 배치 작업 실행

배치 작업을 실행하기 위해서는 JobLauncher를 사용하여 Job을 실행하면 됩니다.

@SpringBootApplication
@EnableBatchProcessing
public class BatchApplication {

    public static void main(String[] args) {
        SpringApplication.run(BatchApplication.class, args);
    }

    @Autowired
    JobLauncher jobLauncher;

    @Autowired
    Job job;

    public void performBatchJob() {
        JobParameters jobParameters = new JobParametersBuilder()
            .addString("JobID", String.valueOf(System.currentTimeMillis()))
            .toJobParameters();
        jobLauncher.run(job, jobParameters);
    }
}

결론

이렇게하면 자바 스프링 부트를 사용하여 배치 작업을 처리할 수 있습니다. Spring Batch가 제공하는 기능들을 이용하여 대용량 데이터 처리와 ETL 작업을 간편하게 구현할 수 있습니다.

더 많은 정보는 Spring Batch 공식 문서를 참조하시기 바랍니다.