ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Spring Batch 알아보기
    Java 2023. 7. 14. 15:48
    728x90
    반응형

    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
    반응형

    댓글

Designed by Tistory.