본문 바로가기
Spring Batch

Spring Batch 개발기 ( 2. Job&Step?? )

by SICDev 2021. 6. 23.
반응형

프로젝트 생성하기😊

개발환경

Intellij
Spring Boot 2.5.1
Java 8
Gradle
JPA
MySQL

 

프로젝트명은 마음대로 적어주자 ( 누구 마음 대로?? 제니퍼 마음대로~뾰로롱😁🙌 )

 

요로코롬 추가해서 프로젝트를 생성하자❗❗


JOB,  Step 생성하기🤔

Spring Batch를 사용하기 위해 BatchTestApplication.java 파일에 @EnableBatchProcessing을 추가해준다

배치 기능을 사용하기 위해서는 필수로 추가해주어야한다😘

그럼 이제 코드를 작성해보자❗

job이라는 패키지를 하나 만들고 BatchConfig.java 파일을 생성한 후 코드를 작성하자!

package com.example.batchtest.job;

import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.batch.core.Job;
import org.springframework.batch.core.Step;
import org.springframework.batch.core.configuration.annotation.JobBuilderFactory;
import org.springframework.batch.core.configuration.annotation.StepBuilderFactory;
import org.springframework.batch.repeat.RepeatStatus;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Slf4j
@RequiredArgsConstructor
@Configuration
public class BatchConfig {
    private final JobBuilderFactory jobBuilderFactory;
    private final StepBuilderFactory stepBuilderFactory;

    @Bean
    public Job testJob() {
        return jobBuilderFactory.get("testJob")
                .start(testStep())
                .build();
    }

    @Bean
    public Step testStep() {
        return stepBuilderFactory.get("testStep")
                .tasklet((contribution, chunkContext) -> {
                    log.info("=====================testStep 실행===============");
                    return RepeatStatus.FINISHED;
                })
                .build();
    }
}

Spring Batch의 모든 Job은 @Configuration으로 등록해서 사용한다❗

Spring Batch에서 Job이란 하나의 배치 작업 단위라고 생각하면된다❗❗

Job안에는 여러개의 Step이 존재할 수 있고, Step안에는 하나의 Tasklet 혹은 하나의 Reader&Processor&Writer가 존재한다😀

위의 그림을 보면 Step안에 Tasklet과 Reader&Processor&Writer이 함께 존재할 수 있는것처럼 보이지만....❗

Step안에는 하나의 Tasklet만 존재하거나 하나의 Reader&Processor&Writer 묶음만 존재 할 수 있다.


두근두근 Batch 실행하기😮

간단하게 Job과 Step을 생성했으니 실행해보자❗❗

 

BatchTestApplication.java의 main 메소드를 실행해보자🤞

실행된 로그를 보면....❗❗ 두둥❗❗ 배치가 실행되었다😮😮

 

굉장히 어려울거같았던 배치가 이렇게나 쉽게😮 다음엔 Mysql 환경에서 Batch를 실행시켜보자❗😊

반응형