Spring Batch : Job의 기본적인 구성, 사용 방법

    들어가기 전

    앞에서 @EnableBatchProcessing으로 SpringBatch를 사용하기 위한 스프링빈을 등록했다. 실제로 Spring Batch로 프로세스를 진행하려면, Job을 만들고 JobLauncher를 통해 실행해야한다. 이번 포스팅에서는 Job의 기본적인 구성과 사용방법을 정리해보고자 한다. 

     


    Job의 사용방법

    Job의 스프링 빈 등록

    Job은 JobLauncher를 통해 실행된다. 이 때, Job 클래스가 아닌 다른 클래스에서 JobLauncher를 통해 실행된다. 따라서 다른 클래스에서 사용할 수 있도록 스프링 빈을 등록해야한다. 

    Step의 스프링 빈 등록

    Step 역시 빈으로 등록해줘야한다. Job을 만들 때, Step을 주입해줘야하기 때문이다.

    Job의 생성

    Job을 생성하기 위해서는 JobBuilderFactory를 이용해서 만들어줘야한다. 이 때, get()을 이용해 Job 이름을 설정한다. start(), next() 메서드를 이용해 어떤 순서대로 잡이 실행될지를 정한다. 이후, build() 메서드를 사용하면 Job이 만들어진다. 

    Step의 생성

    Step을 생성하기 위해서는 StepBuilderFactory를 이용한다. 이 때, tasklet()이라는 메서드를 이용해서 이 Step이 할 일을 정해준다. 쓰레드 관점에서 보면 Step은 쓰레드, tasklet은 Runnable 같은 느낌으로 이해를 하면 된다. taskLet을 구현해 준 후, build()를 하면 Step이 만들어진다. 

     


    Job의 모식도

    위의 코드를 실행하면 다음과 같은 형태로 Job, Step, TaskLet이 생기게 된다. TaskLet을 Step이 주입받고, Job이 Step을 주입받는 형식으로 만들어진다. 

    Job은 위의 코드에서 볼 수 있듯이 여러 Step을 가질 수 있다. 위의 형식처럼 되어있는 Job을 SimpleJob이라고 한다. 

     


    정리 

    • Job, Step은 모두 스프링 빈을 등록해줘야 JobLauncher를 통해서 사용할 수 있다. 
    • Job은 내부적으로 여러 개의 Step을 가진다. 그리고 순차적으로 실행된다.
    • Step은 내부적으로 해야할 일인 "taskLet" 객체를 가진다.

    댓글

    Designed by JB FACTORY