쵼쥬
쵼쥬의 개발공부 TIL
쵼쥬
전체 방문자
오늘
어제
  • 분류 전체보기 (276)
    • 코딩테스트 (192)
      • [알고리즘] 알고리즘 정리 (7)
      • [백준] 코딩테스트 연습 (126)
      • [프로그래머스] 코딩테스트 연습 (59)
    • Spring (71)
      • [인프런] 스프링 핵심 원리- 기본편 (9)
      • [인프런] 스프링 MVC 1 (6)
      • [인프런] 스프링 MVC 2 (4)
      • [인프런] 실전! 스프링 부트와 JPA 활용1 (7)
      • [인프런] 실전! 스프링 부트와 JPA 활용2 (5)
      • [인프런] 실전! 스프링 데이터 JPA (7)
      • [인프런] 실전! Querydsl (7)
      • JWT (5)
      • [인프런] Spring Cloud (17)
      • [인프런] Spring Batch (4)
    • Java (6)
      • [Java8] 모던인자바액션 (4)
      • [부스트코스] 웹 백엔드 (2)
      • [패스트캠퍼스] JAVA STREAM (0)
    • CS (6)
      • 디자인 패턴과 프로그래밍 패터다임 (2)
      • 네트워크 (4)

블로그 메뉴

  • 홈

공지사항

인기 글

태그

  • 타임리프
  • 프로그래머스
  • 위클리 챌린지
  • Spring Data JPA
  • 백분
  • 부스트코스
  • 인프런
  • 알고리즘
  • spring
  • querydsl
  • 자바
  • 비트마스킹
  • 스프링
  • BFS
  • jpa
  • 코딩테스트
  • 구현
  • 백준
  • MVC
  • 누적합

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
쵼쥬

쵼쥬의 개발공부 TIL

스프링 배치 도메인 이해 - Job
Spring/[인프런] Spring Batch

스프링 배치 도메인 이해 - Job

2023. 4. 17. 22:09
  1. Job
  2. JobInstance
  3. JobParameters
  4. JobExecution

 

Job

기본 개념
  • 배치 계층 구조에서 가장 상위에 있는 개념으로서 하나의 배치작업 자체를 의미함
    • 예) “API 서버의 접속 로그 데이터를 통계 서버로  옮기는 배치“ 인 Job 자체를 의미한다. 
  • Job Configuration 을 통해 생성되는 객체 단위로서 배치작업을 어떻게 구성하고 실행할 것인지 전체적으로 설정하고 명세해 놓은 객체
  • 배치 Job 을 구성하기 위한 최상위 인터페이스이며 스프링 배치가 기본 구현체를 제공한다
  • 여러 Step 을 포함하고 있는 컨테이너로서 반드시 한개 이상의 Step으로 구성해야 함
 
기본 구현체
  • SimpleJob
    • 순차적으로 Step 을 실행시키는 Job
    • 모든 Job에서 유용하게 사용할 수 있는 표준 기능을 갖고 있음
  • FlowJob
    • 특정한 조건과 흐름에 따라 Step 을 구성하여 실행시키는 Job
    • Flow 객체를 실행시켜서 작업을 진행함

 

 

JobInstance

기본 개념

  • Job 이 실행될 때 생성되는 Job 의 논리적 실행 단위 객체로서 고유하게 식별 가능한 작업 실행을 나타냄
  • Job 의 설정과 구성은 동일하지만 Job 이 실행되는 시점에 처리하는 내용은 다르기 때문에 Job 의 실행을 구분해야 함
    • 예를 들어 하루에 한 번 씩 배치 Job이 실행된다면 매일 실행되는 각각의 Job 을 JobInstance 로 표현합니다.
  • JobInstance 생성 및 실행
    • 처음 시작하는 Job + JobParameter 일 경우 새로운 JobInstance 생성
    • 이전과 동일한 Job + JobParameter  으로 실행 할 경우 이미 존재하는 JobInstance 리턴
      • 내부적으로 JobName + jobKey (jobParametes 의 해시값) 를 가지고  JobInstance 객체를 얻음
  • Job 과는 1:M 관계
 
BATCH_JOB_INSTANCE  테이블과 매핑
  • JOB_NAME (Job) 과 JOB_KEY (JobParameter 해시값) 가 동일한 데이터는 중복해서 저장할 수 없음

 

 

package com.example.springbatch.config;

import lombok.RequiredArgsConstructor;
import org.springframework.batch.core.Job;
import org.springframework.batch.core.JobParameters;
import org.springframework.batch.core.JobParametersBuilder;
import org.springframework.batch.core.launch.JobLauncher;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;

@RequiredArgsConstructor
public class JobRunner implements ApplicationRunner {
    
    private final JobLauncher jobLauncher;
    private final Job job;
    
    @Override
    public void run(ApplicationArguments args) throws Exception {
        
        JobParameters jobParameters = new JobParametersBuilder()
                .addString("name", "user1")
                .toJobParameters();

        jobLauncher.run(job, jobParameters);
    }
}

 

JobParameter

기본 개념
  • Job을 실행할 때 함께 포함되어 사용되는 파라미터를 가진 도메인 객체
  • 하나의 Job에 존재할 수 있는 여러개의 JobInstance를 구분하기 위한 용도
  • JobParameters와 JobInstance는 1:1 관계
생성 및 바인딩
  • 어플리케이션 실행 시 주입
    • Java -jar LogBatch.jar requestDate=20210101
  • 코드로 생성
    • JobParameterBuilder, DefaultJobParametersConverter
  • SpEL 이용
    • @Value(“#{jobParameter[requestDate]}”), @JobScope, @StepScope 선언 필수
BATCH_JOB_EXECUTION_PARAM 테이블과 매핑
  • JOB_EXECUTION 과 1:M 의 관계

 

 

 

'Spring > [인프런] Spring Batch' 카테고리의 다른 글

시작  (0) 2023.03.10
소개  (0) 2023.03.09
Spring Batch  (0) 2023.03.09
    'Spring/[인프런] Spring Batch' 카테고리의 다른 글
    • 시작
    • 소개
    • Spring Batch
    쵼쥬
    쵼쥬

    티스토리툴바