1. 스프링 배치 활성화
스프링 배치를 실행시키기 위해서는 선언해야 하는 어노테이션이 있다.
@EnablebatchProcessing
2. @EnableBatchProcessing 어노테이션이란?
1. 총 4개의 설정 클래스를 실행시킨다.
2. 스프링 배치의 모든 초기화 및 실행 구성이 이루어진다.
3. 스프링 부트 배치의 자동 설정 클래스가 실행됨
- 빈으로 등록된 모든 Job을 검색해서 초기화
- 초기화 됨과 동시에 모든 Job을 수행하도록 구성됨. (수동으로 실행이 되게 할 수도 있다.)
3. 4개의 설정 클래스?
1. BatchAutoConfiguration
2. SimpleBatchConfiguration
3. BatchConfigurerConfiguration
- BasicBatchConfigurer
- JpaBatchConfigurer
3-1. SimpleBatchConfiguration
- JobBuilderFactory와 StepBuilderFactory 생성
- 스프링 배치의 주요 구성 요소 생성
- 프록시 객체로 생성됨.
- Batch job을 생성할 때 두개의 클래스를 가지고 Job과 Step을 생성한다.
3-2. BatchConfigurerConfiguration
JPABatchconfigurer와 BasicBatchConfigurer를 Bean으로 등록하고 있다.
3-2-1 BasicBatchConfigurer
- SimpleBatchConfiguration 에서 생성한 프록시 객체의 실제 대상 객체를 생성하는 설정 클래스
- 프록시 객체는 실제 객체의 대리 역할을 하는 클래스이다.
- 실제 객체인 Target과 Target의 Proxy 객체가 있다고 한다면,
Target의 Proxy 객체는 Target으로 가는 요청을 interceptor 해서 전처리를 한 후
Target을 호출한다.
- 앞서 SimpleBatchConfiguration은 Target의 Proxy 객체를 생성한다고 하였고
BasicbatchConfigure는 앞서 생성한 proxy 객체의 Target 객체를 생성하여 가지고있다.
- 빈으로 의존성 주입 받아서 주요 객체들을 참조해서 사용할 수 있다.
- BasicbatchConfigure를 활용할 수 있다는 의미이다.
3-2-2. JpabatchConfigurer
- JPA 관련 객체를 생성하는 설정 클래스
- JPABatchConfigurer : BasicBatchconfigurer를 상속받고 있어서 데이터를 서로 공유할 수 있다.
- 데이터를 생성하고 설정이 진행된다.
3-3. BatchAutoConfiguration
- 스프링 배치가 초기화 될 때 자동으로 실행되는 설정 클래스
- Job을 수행하는 JobLauncherApplicationRunner 빈을 생성
- Springboot가 초기화 다 되면, ApplicationRunner라는 interface가 있는데
이 interface를 구현한 구현체를 다 Run 시키고
SpringBoot가 JobLauncherApplicationRunner를 실행시키고
JobLauncherApplicationRunner가 Batch Job을 실행시킨다.
Tip
사용자 정의 BatchConfigurer 인터페이스를 구현하여 사용할 수도 있다.
4. 배치가 실행되는 과정 확인
배치는 아래와 같은 과정으로 실행된다.
EnableBatchProcessing 어노테이션이 아래 4개의 설정 클래스를 실행시키는 형식이다.
4-1. @EnableBatchProcessing
@EnableBatchProcessing annotation은 BatchConfigurationSelector 클래스를 import 하고 있다.
BatchConfigurationSelector 코드를 확인하면, modular라는 key가 존재하지 않는 경우 SimpleBatchConfiguration을 실행시키는 것을 확할 수 있다.
4-2. SimpleBatchConfiguration
JobRepository, JobLauncher, JobRegistry, JobExplorer 등을 bean으로 등록하고 있다.
빈등을 생성할 때 createLazyProxy 라는 메서드를 호출하고 있는데
이는 실제 객체가 아닌 proxy 객체를 생성한다는 것을 의미한다.
proxy 객체는 나중에 실제 객체를 호출하게 된다.
4-3. BatchConfigurerConfiguration
BasicBatchConfigurer와 JpaBatchConfigurer를 bean으로 등록하고 있다.
4-3-1. JpaBatchConfigurer
BasicBatchConfigurer를 상속 받고 있는 것을 확인할 수 있기 때문에 데이터를 서로 공유할 수 있다.
4-4. BatchAutoConfiguration
job을 실행하는 JobLauncherApplicationRunner 객체를 생성하는 것을 확인할 수 있다.
'강의 > 스프링배치' 카테고리의 다른 글
스프링 배치 도메인 이해 - JobExecution (0) | 2022.12.27 |
---|---|
스프링 배치 도메인 이해 - Job + JobInstance + JobParameter (0) | 2022.12.27 |
스프링 배치 - DB 스키마 생성 (2) (0) | 2022.12.26 |
스프링 배치 시작 - DB 스키마 생성 및 이해 (1) (0) | 2022.12.25 |
스프링 배치 시작 - 연습용 배치 생성 (0) | 2022.12.24 |