일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- GitHub
- Vue
- 코틀린
- 생성
- Git
- 에러
- 오라클
- oracle
- Eclipse
- Java
- error
- Security
- 쿼리
- mybatis
- jquery
- 시큐리티
- JPA
- 방법
- Spring
- IntelliJ
- JavaScript
- 자바
- 함수
- 스프링
- 알고리즘
- db
- kotlin
- 넥사크로
- aws
- 프로그래머스
- Today
- Total
송민준의 개발노트
스프링 배치 초기세팅 본문
@SpringBootApplication
// 총 4개의 설정 클래스를 실행시키며 스프링 배치의 모든 초기화 및 실행 구성이 이루어진다
@EnableBatchProcessing
public class SpringBatchApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBatchApplication.class, args);
}
}
스프링 배치 초기화 설정 클래스는 총 3가지가 있다.
1. BatchAutoConfiguration
- 배치가 초기화 될 때 자동으로 실행되는 설정 클래스
- Job을 수행하는 JobLauncherApplicationRunner 빈을 생성
2. SimpleBatchConfiguration
- JobBuilderFactory와 StepBuilderFactory 생성
- 스프링 배치의 주요 구성 요소 생성 - 프록시 객체로 생성됨
3. BatchConfigurerConfiguration
- BasicBatchConfigurer
- SimpleBatchConfiguration에서 생성한 프록시 객체의 실제 대상 객체를 생성하는 설정 클래스
- 빈으로 의존성 주입 받아서 주요 객체들을 참조해서 사용할 수 있다.
- JpaBatchConfigurer
- JPA 관련 객체를 생성하는 설정 클래스
순서
@EnableBatchProcessing - SimpleBatchConfiguration - BatchConfigurerConfiguration - BatchAutoConfiguration
DB 스키마 생성
1. 스프링 배치 메타 데이터
- 스프링 배치의 실행 및 관리를 위한 목적으로 여러 도메인들(Job, Step 등)의 정보들을 저장, 업데이트, 조회할 수 있는 스키마 제공
- 과거, 현재의 실행에 대한 세세한 정보, 실행에 대한 성공과 실패 여부 등을 일목요연하게 관리함으로서 배치운용에 있어 리스크 발생시 빠른 대처 가능
- DB와 연동할 경우 필수적으로 메타 테이블이 생성 되어야 함
2. 스키마 생성 설정
- 수동 생성 : 쿼리 복사 후 직접 실행
- 자동 생성 : spring.batch.jdbc.initialize-schema 설정
1) ALWAYS
- 스크립트 항상 실행, 내장 DB보다 우선적 실행
2) EMBEDDED
- 내장 DB일 때만 실행됨, 기본값임
3) NEVER
- 스크립트 항상 실행 안함, 내장 DB일 경우 스크립트가 생성 안되기 때문에 오류 발생
3. 관련 테이블
- Job 관련 테이블
1) BATCH_JOB_INSTANCE
- job이 실행될 때 JobInstance정보가 저장되며 job_name과 job_key를 키로 하여 하나의 데이터가 저장됨.
- 동일한 job_name과 job_key로 중복 저장될 수 없다.
2) BATCH_JOB_EXECUTION
- job의 실행정보가 저장되며 Job 생성, 시작, 종료 시간, 실행상태, 메시지 등을 관리
3) BATCH_JOB_EXECUTION_PARAMS
- job과 함께 실행되는 JobParameter 정보를 저장
4) BATCH_JOB_EXECUTION_CONTEXT
- job의 실행동안 여러가지 상태정보, 공유 데이터를 직렬화(Json 형식)해서 저장
- Step 간 서로 공유 가능함
- Step 관련 테이블
1) BATCH_STEP_EXECUTION
- Step의 실행정보가 저장되며 생성, 시작, 종료 시간, 실행상태, 메시지 등을 관리
2) BATCH_STEP_EXECUTION_CONTEXT
- Step의 실행동안 여러가지 상태정보, 공유 데이터를 직렬화(Json 형식)해서 저장
- Step별로 저장되며 Step간 서로 공유할 수 없음
출처 강의
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EB%B0%B0%EC%B9%98/unit/91282