ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 06. Job
    BackEnd/Spring Batch 2021. 12. 16. 23:59
    반응형

     

    Architecture

     

      스프링 배치는 Job과 Step을 쉽게 생성 및 설정할 수 있도록 util 성격의 빌더 클래스들을 제공합니다.

     

    JobBuilderFactory

      JobBuilder를 생성하는 팩토리 클래스로 get(String name) 메서드를 제공합니다. jobBuilderFactory.get("jobName")으로 생성합니다.

     

    JobBuilder

      Job을 구성하는 설정 조건에 따라 두 개의 하위 빌더 클래스를 생성하고 실제 Job 생성을 위임합니다.

    • SimpleJobBuilder: SimpleJob을 생성하는 Builder 클래스로 Job 실행과 관련된 여러 설정 API를 제공합니다.
    • FlowJobBuilder: FlowJob을 생성하는 Builder 클래스로 내부적으로 FlowBuilder를 반환함으로써 Flow 실행과 관련된 여러 설정 API를 제공합니다.

     

    SimpleJob

      Step을 실행시키는 Job 구현체로 SimpleJobBuilder에 의해 생성됩니다. 여러 단계의 Step으로 구성할 수 있으며 Step을 순차적으로 실행시킵니다. 모든 Step의 실행이 성공적으로 완료되어야 Job이 성공적으로 완료되며, 맨 마지막에 실행한 Step의 BatchStatus가 Job의 최종 BatchStatus가 됩니다.

    Flow

     

    API

      // JobBuilderFactory > JobBuilder > SimpleJobBuilder > SimpleJob
      public Job batchJob() {
        return jobBuilderFactory
            // JobBuilder를 생성하는 팩토리, Job의 이름을 매개변수로 받음
            .get("batchJob")
            // 처음 실행 할 Step 설정, 최초 한 번 설정하며 실행 시 SimpleJobBuilder 반환
            .start(Step)
            // 다음에 실행 할 Step 설정, 횟수는 제한이 없으며 모든 next()의 Step이 종료되면 Job 종료
            .next(Step)
            // JobParameter의 값을 자동으로 증가해 주는 JobParametersIncrementer 설정
            // (기존의 JobParameter 변경 없이 Job을 여러 번 시작하고자 할 때 사용)
            .incrementer(JobParametersIncrementer)
            // Job의 재시작 가능 여부 설정 (기본값은 true이며, false 설정 시 Job 재시작 하지 않음)
            .preventRestart(true)
            // Job 실행에 파라미터를 검증하는 용도 (DefaultJobParametersValidator 구현체 지원)
            .validator(JobParametersValidator)
            // Job 라이프 사이클의 특정 시점에 콜백 제공받도록 JobExecutionListener 설정
            .listener(JobExecutionListener)
            // SimpleJob 생성
            .build();
      }

    SimpleJob Flowchart

     

    [참고자료]

    인프런-스프링 배치 - Spring Boot 기반으로 개발하는 Spring Batch

    반응형

    'BackEnd > Spring Batch' 카테고리의 다른 글

    08. 배치 상태 유형  (0) 2021.12.22
    07. Step  (0) 2021.12.21
    05. 스프링 배치 초기화 설정  (0) 2021.12.16
    04. 도메인 언어(Domain Language)  (0) 2021.12.15
    03. 메타데이터 스키마(Meta-Data Schema)  (0) 2021.12.11

    댓글

Designed by Tistory.