목차
1. 프로젝트 구성하기
IntelliJ - ultimate를 IDE 기준으로 잡고 설명한다.
우선 new Project로 프로젝트 생성을 하고, 팝업창에서 다음과 같이 설정해준다.
new Proejct - Step1
사실 여기서는 다 개인 취향으로 맞춰서 설정해줘도 문제가 되지 않는다. JDK 만 8 이상으로 해주고 Next를 눌러주자.
new Project - Step 2
•
Lombok : getter, setter, constructor 편의성을 위해 추가해준다.
•
H2, Mysql: inMememory를 위해 H2도 해주고, MySQL을 둘 다 해주지만 하나만 해줘도 문제 없다.
•
Spring Batch: 스프링 배치를 학습하려고 만드는 프로젝트니 필수다.
•
JDBC API: DB접속 API 가 필요하기에 추가해준다.
•
Spring Data JPA: JPA를 사용하지 않고 jdbcTemplate을 사용할 예정이라면 쓰지 않아도 된다.
참고: MySQL 설치
MySQL설치를 하는 방법은 직접 설치와 Docker를 이용한 컨테이너 이용인데, 편한걸로 사용하도록 하자.
•
Docker를 이용하는경우
#docker로 mysql 다운로드 & 실행하기
docker run -p 5432:5432 --name pg -e POSTGRES_PASSWORD=pass -e POSTGRES_USER=postgres -e POSTGRES_DB=springboot -d postgres
Bash
복사
2. 스프링 배치 활성화 및 설정 확인
@EnableBatchProcessing
스프링 배치가 작동하기 위해서는 @EnableBatchProcessing 애노테이션이 선언되어야 한다.
해당 애노테이션을 선언해주면 프로젝트가 구동하면서 총 4개의 설정 클래스를 실행시켜 스프링 배치 초기화에 필요한 실행 및 구성이 동작한다. 그렇게 자동 설정 클래스가 실행되면서 빈으로 등록된 모든 Job을 검색해서 초기화와 동시에 Job을 수행하도록 구성되어 있다.
스프링 배치 초기화 설정 클래스
Spring Batch Initialize Configuration
@EnableBatchProcessing 애노테이션으로 스프링 배치에 필요한 4개의 설정 클래스가 동작한다고 했는데, 이 4개의 설정 클래스 개요와 순서에 대해 대략적으로 살펴보면 다음과 같다.
1. SimpleBatchConfiguration
•
JobBuilderFactory와 StepBuilderFactory를 생성한다.
•
스프링 배치의 주요 구성 요소를 프록시 객체로 생성한다.
2. BatchConfigurerConfiguration
BatchConfigurer 인터페이스를 구현하는 두 개의 설정 클래스가 동작한다.
•
BasicBatchConfigurer
: SimpleBatchConfiguration에서 생성한 프록시 객체의 실제 대상 객체를 생성하는 설정 클래스로 빈으로 의존성을 주입받아 주요 객체를 참조하여 사용할 수 있다.
•
JpaBatchConfigurer
: JPA관련 객체를 생성하는 설정 클래스다.
3. BatchAutoConfiguration
•
스프링 배치가 초기화 될 때 자동으로 실행되는 설정클래스로 Job을 수행하는 JobLauncherApplicationRunner빈을 생성한다.