TIL

스프링 배치 핵심 개념

Job과 Step

Job: 배치 처리의 가장 큰 단위

Step: Job을 구성하는 실행 단위

Spring batch 해부: 제공과 제어의 두 영역

Spring Batch가 제공하는 영역

개발자가 제어하는 영역

@Configuration
class BatchConfig(
    private val jobRepository: JobRepository,
    private val transactionManager: PlatformTransactionManager
) {

    @Bean
    fun dataTerminationJob(terminateStep: Step): Job =
        JobBuilder("dataTerminationJob", jobRepository)
            .start(terminateStep)
            .build()

    @Bean
    fun terminateStep(
        itemReader: ItemReader<String>,
        itemWriter: ItemWriter<String>
    ): Step =
        StepBuilder("terminateStep", jobRepository)
            .chunk<String, String>(10, transactionManager)
            .reader(itemReader)
            .writer(itemWriter)
            .build()

    @Bean
    fun itemReader(): ItemReader<String> {
        // ItemReader 구현체 반환
        return ListItemReader(listOf("a", "b", "c")) // 예시
    }

    @Bean
    fun itemWriter(): ItemWriter<String> {
        // ItemWriter 구현체 반환
        return ItemWriter { items -> items.forEach { println("write: $it") } }
    }
}