πŸ€” μ‚¬μš©ν•˜λŠ” 이유

Spring BatchλŠ” λŒ€λŸ‰μ˜ 데이터λ₯Ό μ²˜λ¦¬ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” μ˜€ν”ˆ μ†ŒμŠ€ ν”„λ ˆμž„μ›Œν¬μž…λ‹ˆλ‹€. Spring BatchλŠ” 맀우 μœ μ—°ν•˜λ©° 일괄 처리 (Batch Processing) μž‘μ—…μ„ μ²˜λ¦¬ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€. 이λ₯Ό μœ„ν•΄ Spring BatchλŠ” μž‘μ—…μ„ λ‹¨κ³„λ³„λ‘œ λΆ„ν• ν•˜μ—¬ 각 단계λ₯Ό μ‹€ν–‰ν•˜κ³  νŠΈλžœμž­μ…˜ 관리와 μ˜ˆμ™Έ 처리λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.

μƒ˜ν”Œ Spring Batch ν”„λ‘œμ νŠΈλ₯Ό λ§Œλ“œλŠ” 방법은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

1. Spring Boot ν”„λ‘œμ νŠΈ 생성

Spring Boot CLIλ₯Ό μ‚¬μš©ν•˜μ—¬ μƒˆ Spring Boot ν”„λ‘œμ νŠΈλ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.

$ spring init --dependencies=web,batch my-batch-project

2. μ˜μ‘΄μ„± μΆ”κ°€

build.gradle νŒŒμΌμ— Spring Batch 및 κ΄€λ ¨ μ˜μ‘΄μ„±μ„ μΆ”κ°€ν•©λ‹ˆλ‹€.

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-batch'
	implementation 'org.springframework.batch:spring-batch-core'
	implementation 'org.springframework.batch:spring-batch-infrastructure'
	testImplementation 'org.springframework.batch:spring-batch-test'
}

3. Jobκ³Ό Step 생성

Spring Batch μž‘μ—… (Job)은 ν•˜λ‚˜ μ΄μƒμ˜ 단계 (Step)둜 κ΅¬μ„±λ©λ‹ˆλ‹€. Jobκ³Ό Step을 λ§Œλ“€κΈ° μœ„ν•΄ λ‹€μŒκ³Ό 같이 Java 클래슀λ₯Ό λ§Œλ“­λ‹ˆλ‹€.

@Configuration
**public** **class** **BatchConfiguration** {

    @Autowired**private** JobBuilderFactory jobBuilderFactory;

    @Autowired**private** StepBuilderFactory stepBuilderFactory;

    @Bean**public** Step **step1**() {
        **return** stepBuilderFactory.get("step1")
                .tasklet((stepContribution, chunkContext) -> {
                    System.out.println("Hello, World!");
                    **return** RepeatStatus.FINISHED;
                })
                .build();
    }

    @Bean**public** Job **job**(Step step1) {
        **return** jobBuilderFactory.get("job")
                .incrementer(**new** **RunIdIncrementer**())
                .start(step1)
                .build();
    }
}

이 μ½”λ“œλŠ” μž‘μ—… (Job)κ³Ό 첫 번째 단계 (Step)을 μ •μ˜ν•©λ‹ˆλ‹€. 첫 번째 λ‹¨κ³„μ—μ„œλŠ” "Hello, World!" λ©”μ‹œμ§€κ°€ 좜λ ₯λ©λ‹ˆλ‹€.

4. 배치 μ‹€ν–‰

배치λ₯Ό μ‹€ν–‰ν•˜λ €λ©΄ SpringApplication.run λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ Spring Boot μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ‹œμž‘ν•©λ‹ˆλ‹€.

@SpringBootApplication@EnableBatchProcessing**public** 
**class** **MyBatchProjectApplication** {

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

}

이제 ν”„λ‘œμ νŠΈλ₯Ό λΉŒλ“œν•˜κ³  μ‹€ν–‰ν•©λ‹ˆλ‹€.

$ ./gradlew bootRun

μ΄κ²ƒμœΌλ‘œ κ°„λ‹¨ν•œ Spring Batch μƒ˜ν”Œ ν”„λ‘œμ νŠΈλ₯Ό λ§Œλ“€μ—ˆμŠ΅λ‹ˆλ‹€! 이제 Jobκ³Ό Step을 μΆ”κ°€ν•˜κ³  데이터λ₯Ό μ²˜λ¦¬ν•˜λŠ” 방법을 배울 수 μžˆμŠ΅λ‹ˆλ‹€.