-
Spring Batch 알아보기Java 2023. 7. 14. 15:48728x90반응형
Spring Batch
Spring Batch는 다양하고 필수적인 작업들을 구현 할 수 있도록 만들어진 배치 프레임 워크입니다.
가볍고 다양한 기능을 제공하여 복잡하고 대용량의 작업을 처리할 수 있도록 설계되어 있습니다.특징
- 트랜잭션 처리 (Transaction management)
- 청크 기반 처리 (Chunk based processing)
- 선언적 I/O (Declarative I/O)
- 시작/중지/다시 시작 (Start/Stop/Restart)
- 재시도/건너뛰기 (Retry/Skip)
- 웹 기반 관리 인터페이스 (Web based administration interface)
아키텍처
사용방법
Dependency
dependencies { implementation 'org.springframework.boot:spring-boot-starter-batch' }
@EnableBatchProcessing
@SpringBootApplication @EnableBatchProcessing public class SpringBootBatchApplication { public static void main(String[] args) { SpringApplication.run(SpringBootBatchApplication.class, args); } }
Batch Configuration
@Configuration @RequiredArgsConstructor public class BatchConfiguration { private final JobBuilderFactory jobBuilderFactory; private final StepBuilderFactory stepBuilderFactory; @Bean public Job testJob() { return jobBuilderFactory .get("testJob") .start(testStep()) .build(); } @Bean public Step testStep() { return stepBuilderFactory .get("testStep") .tasklet((contribution, chunkContext) -> { System.out.println("testStep..."); return RepeatStatus.FINISHED; }) .build(); } }
실행 결과
Running default command line with: [] Job: [SimpleJob: [name=testJob]] launched with the following parameters: [{}] testStep... Executing step: [testStep] Step: [testStep] executed in 12ms
Specifying a Batch Data Source
기본적으로 Datasource 의 내용을 바탕으로 Database를 사용한다. 만약 다른 데이터 베이스를 사용하려면 @BatchDataSource 를 이용하고 두개 이상의 Datasource 가 필요하게 될 경우 하나를 @Primary 로 지정해주어야 한다.
Running Spring Batch Jobs on Startup
기본적으로 Dependency가 추가되면 spring batch는 활성화 된다. Application Context에서 Job 이 발견되면 해당 Job을 동작시키게 되어있다. 만약 두개 이상의 Job 이 발견되면 spring.batch.job.name 을 통해 설정 할 수 있다. 만약 Application 시작 시 동작하지 않고 싶으면 spring.batch.job.enabled 를 false 로 설정하면 된다.
Reference
728x90반응형