ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 3. Spring Batch Project 생성 및 설정
    IT/Spring Batch 2021. 4. 29. 22:33

    Spring Batch Project 생성

    본격적으로 실습을 위해 Sprig Batch Project를 생성 해 보자.

    https://start.spring.io/에서 spring initializer를 사용하여 위와 같이 기본 프로젝트를 생성한다.

     - Lombok : class 를 작성할때 annotaion 을 이용한 편리한 기능들을 이용할 수 있다.

     - Spring Data JPA : 배치로 처리할 데이터에 access 하기 위해 JPA를 사용한다.

     - MySql Driver : mysql에 연결하기 위한 driver이다.

     - Spring Batch : Spring 을 이용해 Batch 기능을 개발하기 위해 추가한다.

     

    build.gradle 파일을 확인해 보면 각 dependency가 잘 추가된 것을 볼 수 있다.

    이제 기본적인 프로젝트 파일 생성이 완료되었으니 실제로 간단한 Job을 생성하여 실행 해 보자.

     

    @EnableBatchProcessing

    스프링 배치에서 제공하는 Batch 기능들을 사용하여 반드시 작성해 줘야 하는 annotation 이다. main 함수가 있는 BatchApplicaion 클래스에 붙여주자.

     

    Job class 생성

    프로젝트에 job 이라는 패키지를 생성하고 그 밑에 SimpleJobConfig 라는 클래스를 생성한다.

    Job을 위한 configuration 클래스로 사용하기 위해 @Configuration 어노테이션을 붙이고, job과 step을 생성하기 위한 JobBuilderFactory 와 StepBuilderFactory를 생성한다. lombok의 @RequiredArgsConstructor 어노테이션을 이용하여 두 멤버변수에 생성자 DI를 적용한다.

     

    Job과 Step, Tasklet 생성

    다음은 테스트로 실행할 Job과 Step, Tasklet을 각각 생성 해 보자.

    package com.sgbaek.batch.job;
    
    import lombok.RequiredArgsConstructor;
    import org.springframework.batch.core.Job;
    import org.springframework.batch.core.Step;
    import org.springframework.batch.core.configuration.annotation.JobBuilderFactory;
    import org.springframework.batch.core.configuration.annotation.StepBuilderFactory;
    import org.springframework.batch.repeat.RepeatStatus;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    @Configuration
    @RequiredArgsConstructor
    public class SimpleJobConfig {
        private final JobBuilderFactory jobBuilderFactory;
        private final StepBuilderFactory stepBuilderFactory;
    
        @Bean
        public Job job(){
            return jobBuilderFactory.get("simplejob")   //job name
                    .start(step1())
                    .build();
        }
    
        @Bean
        public Step step1() {
            return stepBuilderFactory.get("step1")  //step name
                    .tasklet((contribution, chunkContext) -> {
                        System.out.println(">>>>>>SimpleJob1<<<<<<<");
                        return RepeatStatus.FINISHED;
                    })
                    .build();
        }
    }

     - tasklet 내부의 lambda function을 통해 console에 ">>>>>>SimpleJob1<<<<<<<" 을 출력한다.

     - RepeatStatus.FINISHED 를 통해 정상 종료되었음을 리턴한다.

     

    여기까지 작업을 완료하고 Batch Application을 실행시키면 어떻게 될까? 다음과 같이 에러를 출력하며 FAIL 된다.

    에러 내용을 살펴보면 DataSource에 url이 없으며, DataSource가 설정되어 있지 않다는 메시지와 함께 아랫쪽에 DB를 셋팅하라는 형태의 메시지가 출력된다.

     

    전 챕터에서 Spring Batch에는 Job Repository가 존재하며, Job Repository는 DB를 사용하여 저장한다고 하였다. 우리는 현재 Job Repository DB에대한 설정을 하지 않았기에 위와같이 실행이 되지 않는 것이다.

    다음장에서는 Job Repository를 설정 해 보도록 하겠다.

    'IT > Spring Batch' 카테고리의 다른 글

    4. Spring Batch Job Repository 설정  (0) 2021.04.30
    2. Spring Batch Job  (0) 2021.04.29
    1. Spring Batch  (0) 2021.04.27
Designed by Tistory.