StepBuilderFactory Job을 만들기 위해서 JobbuilderFactory를 사용했었다. 이것과 마찬가지로 Step을 만들기 위해서는 StepBuilderFactory를 이용해야한다. 이번 포스팅에서는 StepBuilderFactory가 어떤 형식으로 어떤 Job을 만들어내는지 간단하게 정리하려고 한다. StepBuilderFactory의 객체 생성 StepBuilderFactory에서 get() 메서드를 이용하면 StepBuilder를 반환해준다. StepBuilder는 어떤 메서드를 사용하고, 어떤 메서드를 사용하는지에 따라 여러 종류의 하위 StepBuilder를 반환해준다. 그리고 이 하위 StepBuilder를 이용해서 Step을 만들게 된다. 메서드 생성 Builder taskl..
SImpleJob Incrementer 동일한 SimpleJob을 실행하기 위해서는 전달되는 JobParameters가 달라야 한다. JobParameters를 매번 다르게 주는 방법도 있지만, SimpleJobBuilder에서 제공하는 incrementer() 메서드를 이용하면 손쉽게 다른 JobParameters를 전달해서 동일한 Job을 계속 실행할 수 있다. SimpleJob Incrementer JobParameters에서 필요한 값을 증가시켜 다음에 사용될 JobParameters 객체를 반환함. 기존의 JobParameter의 변경없이 여러번 Job을 실행할 때 사용 RunIdIncrementer를 제공함. JobParametersIncrementer 인터페이스를 구현해서 사용할 수도 있음...
SimpleJob의 구조도 이번 포스팅에서는 SimpelJob이 어떻게 실행되고, 실행되는 과정에서 어떤 것이 생성되고 반환되는지를 구조와 코드로 한번 파악을 해보고자 한다. SimpleJob의 구조도 확인 SimpelJob이 실행되는 과정과 만들어지는 값들을 순서대로 정리를 해보고자 한다. SimpleJobLauncher는 SimpleJob, JobParameters를 전달받아 Job을 실행한다. Job이 실행되기 전, SimpleJobLauncher는 JobExecution, JobInstance, ExecutionContext를 만들어둔다. 이 때, BatchStatus.Started 설정해준다. SimpleJob은 실행 전 JobListner의 Before 메서드와 관련된 것이 있다면 수행한다. ..
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..