Validator 생성 CustomJobParametersValidator.java import org.springframework.batch.core.JobParameters; import org.springframework.batch.core.JobParametersInvalidException; import org.springframework.batch.core.JobParametersValidator; public class CustomJobParametersValidator implements JobParametersValidator { @Override public void validate(JobParameters jobParameters) throws JobParametersInvalidEx..
Read more[SpringBatch 실습] 11. JobParameters 검증 CustomValidator 만들기 (JobParametersValidator 구현), 스프링 배치가 제공해주는 DefaultJobParametersValidator 사용해보기
Job 생성 import lombok.RequiredArgsConstructor; import org.springframework.batch.core.*; import org.springframework.batch.core.configuration.annotation.JobBuilderFactory; import org.springframework.batch.core.configuration.annotation.StepBuilderFactory; import org.springframework.batch.core.launch.support.RunIdIncrementer; import org.springframework.batch.core.scope.context.ChunkContext; import or..
Read moreJob 생성 이전에 배웠었던 기본 Job import lombok.RequiredArgsConstructor; import org.springframework.batch.core.Job; import org.springframework.batch.core.Step; import org.springframework.batch.core.StepContribution; import org.springframework.batch.core.configuration.annotation.JobBuilderFactory; import org.springframework.batch.core.configuration.annotation.StepBuilderFactory; import org.springframework.b..
Read moreListner 생성 및 설정 JobRepositoryListener.java import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.batch.core.*; import org.springframework.batch.core.repository.JobRepository; import org.springframework.stereotype.Component; @Component @RequiredArgsConstructor @Slf4j public class JobRepositoryListener implements JobExecutionListener { private final Jo..
Read moreBATCH 테이블 Prefix 변경해보기 schema-postgresql.sql org.springframework.batch/spring-batch-core/4.3.5/b5ff5d227600df2ba087344160db2b8a38476cb3/spring-batch-core-4.3.5.jar!/org/springframework/batch/core/schema-postgresql.sql 위 파일의 쿼리를 가져와서, BATCH_ 부분을 SYSTEM_으로 변경해준다. -- Autogenerated: do not edit this file CREATE TABLE SYSTEM_JOB_INSTANCE ( JOB_INSTANCE_ID BIGINT NOT NULL PRIMARY KEY , VERSION BIGINT ..
Read moreExecutionContext 개념 https://devfunny.tistory.com/485 [스프링 배치] 배치 잡의 세션 ExecutionContext 상황 스프링 배치가 진행중이다. 진행 도중에 오류가 발생했고, 실패한 시점부터 처리를 다시 시작해야한다. 이 경우에 스프링 배치는 실패한 시점을 어떻게 알아낼 수 있을까? 실패시마다, 사 devfunny.tistory.com 실습해보기 ExecutionContextConfiguration.java ExecutionContextTasklet1.java ExecutionContextTasklet2.java ExecutionContextTasklet3.java ExecutionContextTasklet4java ExecutionContextConfigur..
Read more들어가기전 Batch Job 수행시 Step 실패하는 과정 첫번째 포스팅을 참고하자. https://devfunny.tistory.com/758 [SringBatch 실습] 3. Batch Job 수행시 Step 실패하는 경우 Job 생성 JobExecutionConfiguration.java import lombok.RequiredArgsConstructor; import org.springframework.batch.core.Job; import org.springframework.batch.core.Step; import org.springframework.batch.. devfunny.tistory.com Job 생성 StepExecutionConfiguration.java import lombo..
Read moreTasklet 클래스 생성 CustomTasklet.java import org.springframework.batch.core.StepContribution; import org.springframework.batch.core.scope.context.ChunkContext; import org.springframework.batch.core.step.tasklet.Tasklet; import org.springframework.batch.repeat.RepeatStatus; public class CustomTasklet implements Tasklet { /** * 비즈니스 로직 구현 * @param stepContribution * @param chunkContext * @return * @th..
Read moreJob 생성 JobExecutionConfiguration.java import lombok.RequiredArgsConstructor; import org.springframework.batch.core.Job; import org.springframework.batch.core.Step; import org.springframework.batch.core.StepContribution; import org.springframework.batch.core.configuration.annotation.JobBuilderFactory; import org.springframework.batch.core.configuration.annotation.StepBuilderFactory; import org.sp..
Read moreJob 생성 JobParameterConfiguration.java 파라미터를 출력하는 Job을 생성하자. import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.batch.core.Job; import org.springframework.batch.core.JobParameters; import org.springframework.batch.core.Step; import org.springframework.batch.core.StepContribution; import org.springframework.batch.core.configuration.annotation.JobBui..
Read moreSpringBatch 시작하기 HelloJobConfiguration 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.StepContribution; import org.springframework.batch.core.configuration.annotation.JobBuilderFactory; import org.springframework.batch.core.configuration.annotatio..
Read more기본개념 우선 ItemReader, ItemProcessor, ItemWriter 에 대해 간단하게 살펴보자. ItemReader 다양한 타입의 입력 데이터를 읽어오는 인터페이스로, 배치 수행의 대상이 될 데이터를 담는다. package org.springframework.batch.item; import org.springframework.lang.Nullable; public interface ItemReader { @Nullable T read() throws Exception, UnexpectedInputException, ParseException, NonTransientResourceException; } ItemProcessor ItemReader로 읽어온 데이터들을 가공하고 변환하는 과정을..
Read more@JobScope와 @StepScope 개념 - 해당 어노테이션이 선언되면 생성이 어플리케이션 구동 시점이 아닌 빈의 실행 시점에 이루어진다. 스프링의 @Bean 어노테이션은 스프링이 초가화되는 시점에 빈이 생성된 후 관리된다. 스프링 배치에서 @JobScope, @StepScope 어노테이션은 어플리케이션이 실제로 실행되는 시점에 생성된다. - 스코프를 프록시 모드를 기본값으로 하기 때문에, 어플리케이션 구동 시점에는 빈의 프록시 객체가 생성되어 실행 시점에 실제 빈을 호출해준다. @JobScope - Step 선언시에 사용한다. - @Value : jobParameters, jobExecutionContext 만 사용 가능하다. @StepScope - Tasklet 이나 ItemReader, Item..
Read more들어가며 SimpleJob, FlowJob 에서 각 STEP의 결과 상태값에 따라 BATCH_JOB_EXECUTION, BATCH_STEP_EXECUTION 테이블의 EXIT_CODE, STATUS 컬럼에 어떻게 셋팅되어지는지 확인해보자. 명칭 설명 STATUS (batchStatus) JobExecution, StepExecution의 속성 값으로, JOB, STEP의 최종 결과 상태를 가진다. EXIT_CODE (ExitStatus) JobExecution, StepExecution의 속성 값으로, JOB, STEP의 실행 이후 어떤 상태로 종료되었는지정의한다. SimpleJob package com.spring.batch.flowjob; import lombok.RequiredArgsConstruc..
Read moreJob 재실행 Job의 재실행에 대해서는 아래 포스팅을 참고하자. https://devfunny.tistory.com/680 SpringBatch 에서 JobInstance, JobExecution 의 관계 들어가기전 JobInstance, JobExecution 의 개념은 알고가자. https://devfunny.tistory.com/476?category=820618 [스프링배치] 잡의 실행 (JobLauncher, JobInstance, JobExecution, JobParameters) 잡의 실행 잡.. devfunny.tistory.com JOB을 재실행하면 FAILED 상태로 끝난 STEP만 실행 대상이 되는데, allowStartIfComplete(true)를 사용하여 COMPLETED로 끝..
Read more