Simple Job의 PreventRestart Simple Job은 실패한 JobInstance만 다시 실행할 수 있다. 그렇지만 이렇게 실패한 JobInstance가 다시 실행되는 것을 막는 방법이 있다. 바로 preventRestart 메서드를 이용하면 된다. jobBuilderFactory.get("batchjob2") .start(step1()) .next(step2()) .next(step3()) .preventRestart() .build(); 사용은 다음과 같이 Job을 만들 때, preventRestart 메서드를 넣어주는 것으로 설정이 가능하다. preverntRestart와 개념도 먼저 preventRestart를 설정하면 어떻게 동작하는지를 코드 단위로 좀 더 쪼개서 보려고 한다. ..
SimpleJob의 Validator SimpleJob의 Validator는 Job이 실행되기 전에 Job에 전달된 JobParameters가 정상적인지를 확인한다. Job은 실행 전에 JobInstance를 만드는데 JobInstance를 만드는데 JobParameters가 필요하다. 따라서 전달된 JobParameters가 정말 정상적인 것인지 확인이 필요하기 때문에 JobParameters 검증을 위한 Validator가 추가된다. Validator 추가 jobBuilderFactory.get("batchjob2") .start(step1()) .next(step2()) .next(step3()) .validator(new DefaultJobParametersValidator()) // Valida..
이 포스팅에서는 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이 발생하는 것을 확인할 수 ..