개발 기록
> [Spring Batch] Job, Step 속성 본문
■
1. Job
(1) JobBuilder
지정된 이름을 가진 작업에 대한 새 빌더를 만든다. JobBuilderHelper 를 상속받고 있으며 메서드 별로 반환하는 빌더 유형이 다르다.

@Bean
public Job simpleJobBuilder() {
return new JobBuilder("simpleJob", jobRepository)
.start(step1())
.next(step2())
.preventRestart()
.incrementer(new RunIdIncrementer())
.validator( new DefaultJobParametersValidator(new String[]{"name", "date"}, new String[]{"count"}))
.listener(new JobCompletionNotificationListener())
.build();
}
(2) 속성
| 메서드명 | 설명 |
| start() | 특정 단계 또는 일련의 단계를 실행할 새 작업 빌더를 생성 => SimpleJobBuilder |
| next() | 이전 단계가 성공한 경우, 이 단계로 진행 또는 종료 |
| preventRestart() | 실패한 경우에도 이 작업 실행을 다시 시작하지 않도록 하는 설정 |
| incrementer() | 기존에 전달되는 JobParameters를 변경하지 않으면서 JobParameters 추가 * RunIdINcrementer .getNext() => 새로운 JobParameters를 만들어 제공 |
| listener() | Job, Step, Chunk 실행 전후에 발생하는 이벤트를 잡아 활용하도록 제공 |
| validator() | Job이 실행되기 전에 Job에 전달된 JobParameters 검증 |
■
2. Step
(1) StepBuilder
@Bean
public Step step() {
return new StepBuilder("step", jobRepository)
// Chunk(10) 선언(트랜잭션 범위): 한 번에 최대 10개의 레코드,
// <?,?> (Reader의반환할 타입, Writer에 파라미터로 넘어올 타입)
.<?, ?> chunk(3, transactionManager)
// 데이터를 읽는다 .
.reader(reader())
// 사용자 정의 비즈니스 로직 적용
.processor(processor())
// 데이터베이스에 기록
.writer(writer())
.taskExecutor(this.taskExecutor)
.listener(new CustomJobExecutionListener())
.faultTolerant()
.skip(Exception.class)
.skipLimit(1000)
.retryLimit(3)
.retry(ConnectTimeoutException.class)
.build();
}
(2) 속성
| 메서드명 | 설명 |
| chunk() | 트랜잭션 범위 |
| reader() | |
| processor() | |
| writer() | |
| taskExecutor() | 한 Step 내에서 각 스레드가 chunk 단위로 실행되게 하는 방식 |
| tasklet() | tasklet 클래스 설정, TaskletStepBuilder 반환 |
| faultTolerant() | 처리 실패 시 Skip, Retry 로 대응 하기 위한 설정 |
| skip() | 설정된 Exception이 발생했을 경우, 해당 데이터 처리를 건너뛰는 기능 |
| skipLimit() | skip-limit에 설정된 횟수만큼은 예외가 발생해도 예외를 skip 한다. |
| startLimit() | Step 의 실행 횟수를 설정, 설정한 만큼 실행되고 초과시 오류 발생 |
| allowStartIfComplete() | 실패로 인한 재시작이 가능한 Job이 다시 실행될 때, 이전 실행에서 Step의 성공 여부와 관계 없이 항상 Step을 실행하기 위한 설정 (default false) * 잡이 실행될때마다 무조건 해당 Step이 실행되게 하는 옵션 |
| retry() | 해당 Exception 이 발생 했을 때 재시도 |
| retryLimit() | 재시도 횟수 |
'Spring' 카테고리의 다른 글
| > [Spring] Bean 생명 주기에 사용자 정의 작업 연결 - @PostConstruct, @PreDestory (0) | 2023.12.01 |
|---|---|
| > [Spring Security] - Filter Chain 생성과 호출 (0) | 2023.11.13 |
| > [AOP] 3. 포인트컷(PointCut)의 다양한 표현식 (0) | 2022.10.27 |
| > [Spring Batch] 스프링 배치 - 1. 입문 (개념과 흐름 파악) (0) | 2022.10.25 |
| > [Spring Batch] Scope(@StepScope, @JobScope) & Job Parameter - 1. Job Parameter (0) | 2022.10.17 |