Spring Batch - Gradle #1 환경설정

최동민·2023년 2월 14일

Spring Batch

목록 보기
1/3

프로젝트 생성

Jar/War 차이 설명 링크

BatchPracticeGradleApplication 클래스에
Batch 로서 동작할 것임을 지정하는 @EnableBatchProcessing 어노테이션 지정.

properties를 yml로 변경

DB 연동 (mariaDB)

Tasklet 이라는 클래스 생성. 반쪽 배치 개념이라고 생각.
이것을 이용하게 되면 ItemReader, Processor 등이 필요 없이 실행할 수 있도록 하는 것.
그리고 제 역할을 하기 위해 필요한 어노테이션을 주입한다.

@Configuration이라 정의했기 때문에 메서드는 다른 클래스에서 중복이 되면 에러가 난다. 고로 이름을 지정한다.

실행해보면 다음과 같은 에러가 난다.

배치를 돌리는 데에 기본적으로 필요한 테이블들이 있다.
그 테이블에 어떤 배치가 언제 실행되었고 등의 정보가 들어가는데, 스키마가 필요하다.

전체 copy

배치 실행에 필요한 테이블들을 만드는 스크립트를 실행하는 것
테이블 생성

실행해보면 만들어진 테이블에 값이 들어간다.

batch_job_instance와 실행하면 찍히는 batch_job_execution 테이블의 컬럼

batch_step_execution

이제 다시 실행을 해볼건데, 로그가 찍힐 수 있도록 설정해준다
이전에 한번 실행된 배치는 다시 실행되지 않는다. 파라미터를 바꾸어 주어야 함. 이때 우리가 배치를 매번 할 때 마다 받아오는게 아니라 배치가 밖에서 파라미터를 받아와서 실행될 수 있게 세팅한다.

Program arguments에서 --job.name에 Job 이름과 임의의 파라미터 v=1을 넣어준다.

로그가 뜨는 것을 확인할 수 있다.

하지만 이 파라미터로 다시 돌리면 돌아가지 않게 된다. 안전을 위해 배치가 돌아간 것을 한번 더 돌아가게 하지 않게 하는 것.
파라미터를 v=2로 바꾸면 또 돌아간다.

이제 좀 더 고도화하여 step2를 만들어보자.
외부에서 변수로 파라미터를 받을 것이다. @Value 어노테이션 사용.
이때 @JobScope 어노테이션도 정의해주어야 함.

파라미터가 같아도 date 값이 들어가기 때문에 상관없다.

로그 표시 완료

성공된 배치는 다시 실행되지 않는다는 것을 기억하자.

profile
코드를 두드리면 문이 열린다

0개의 댓글