이 포스팅에서는 Simpel Job의 Start / Next가 어떻게 동작하는지를 코드 단위로 확인해보고자 한다. Simple Job 코드 구성 Simple Job은 위처럼 코드를 구성해서 만든 후, 그것을 스프링 빈으로 등록해야지 SimpleJob Launcher에서 사용이 가능하다. 그렇다면 각 Simple Job을 만드는 코드 구성은 어떻게 되는 것인지 알아보려고 한다. get()메서드를 타고 가본다. get 메서드에서는 매개변수로 주어진 name 값을 JobBuilder에 전달해준다. 그리고 그렇게 생성된 Job Builder를 반환해준다. 그렇다면 .start()부터는 jobBuilder.start()의 메서드로 되어있는 것을 알 수 있다. start() 메서드로 SimpleJobBuilder를..
들어가기 전 Spring Batch는 Job이 실행되면 실행 결과를 항상 DB에 저장한다. 이를 위해서 DB 테이블 9개가 생성이 되고, 각각의 필요한 정보를 저장한다. 이번 포스팅에서는 각 테이블이 어떤 것들을 바라보고 무엇을 의미하는지를 정리하고자 한다. Job 관련 테이블 BATCH_JOB_INSTANCE Job이 실행될 때 만들어지는 JobInstance 정보가 저장됨. Job_Instance의 키는 JobName + JobParameter의 Hash값임. 동일한 JobName, JobParameter로 중복 저장될 수 없음. BATCH_JOB_EXECUTION Job의 실행정보가 저장됨. Job 생성, 시작, 종료시간, 실행 상태, 메세지 등을 관리. BATCH_JOB_EXECUTION_PARA..
들어가기 전 Spring Batch는 Job을 실행시키는 형태로 만들어진다. Spring Batch는 Job을 실행하면서 Job, Step의 실행 관련 메타 정보를 기록해둔다. 그리고 Job이 끝나면, 가지고 있던 데이터를 DB에 저장한다. 이 때, 워낙 많은 정보가 있기 때문에 9개의 DB 테이블을 만들어서 각 파라메터를 잘 정리한다. 이번 포스팅에서는 이 메타 데이터 저장을 위한 DB 스키마에 대해서 알아보고자 한다. DB 스키마 설정 내장 메모리를 사용하는 것이 아니라, DB와 연동해서 스프링 배치를 사용한다면 DB 스키마는 반드시 생성해야한다. 만약 DB 스키마를 생성하지 않는다면, 정보를 저장할 곳이 없기 때문에 Spring Batch 실행 과정에서 Exception이 발생하는 것을 확인할 수 ..
들어가기 전 앞에서 @EnableBatchProcessing으로 SpringBatch를 사용하기 위한 스프링빈을 등록했다. 실제로 Spring Batch로 프로세스를 진행하려면, Job을 만들고 JobLauncher를 통해 실행해야한다. 이번 포스팅에서는 Job의 기본적인 구성과 사용방법을 정리해보고자 한다. Job의 사용방법 Job의 스프링 빈 등록 Job은 JobLauncher를 통해 실행된다. 이 때, Job 클래스가 아닌 다른 클래스에서 JobLauncher를 통해 실행된다. 따라서 다른 클래스에서 사용할 수 있도록 스프링 빈을 등록해야한다. Step의 스프링 빈 등록 Step 역시 빈으로 등록해줘야한다. Job을 만들 때, Step을 주입해줘야하기 때문이다. Job의 생성 Job을 생성하기 위해..
@EnableBatchProcessing 스프링 Batch를 실행하기 위해서는 스프링부트 메인 클래스에 @EnbableBatchPrcoessing을 설정해줘야한다. 그렇다면 @EnableBatchProcessing 어노테이션을 달면 어떤 일이 일어날까? @EnableBatchProcessing 추가 탐방 @EnableBatchProcessing 어노테이션을 타고 들어가면 @Import 어노테이션으로 BatchConfigureationSelector 클래스를 빈으로 등록하는 것을 알 수 있다. BatchConfigureationSelector 클래스를 타고 들어가면, ModularBatchConfig / SimpleBatchConfig 중에 무엇을 스프링 빈으로 등록할지를 정한다. 여기서 정해진 설정값을 ..