Spring Batch - 23. Job 을 Step 으로 갖는 JobStep
출처 해당 포스트는 정수원 강사님의 스프링 배치 - Spring Boot 기반으로 개발하는 Spring Batch 강의를 바탕으로 작성 됐습니다. 목차 Spring Batch - ItemWriter Spring Batch - ItemProcessor Spring Batch - ItemReader Spring Batch - ChunkProvider 와 ChunkProcessor Spring Batch - ChunkOrientedTasklet Spring Batch - Chunk 기반 Step Spring Batch - 24. FlowJob Spring Batch - 23. Job 을 Step 으로 갖는 JobStep Spring Batch - 22. Tasklet 기반 Step Spring Batch - 21. TaskletStep Spring Batch - 20. StepBuilderFactory 와 StepBuilder Spring Batch - 19. JobParameters 증가 JobParametersIncrementer Spring Batch - 18. Job 의 재시작 방지 preventRestart Spring Batch - 17. JobParameters 검증 JobParametersValidator Spring Batch - 16. SimpleJob 와 SimpleJobLauncher Spring Batch - 15. JobBuilderFactory & JobBuilder JobStepJob 에 속하는 Step 중에서 외부의 Job 을 포함하고 있는 Step 입니다. 외부의 Job 이 실패하게 되면 해당 Step 이 실패하므로 결국 해당 Step 을 가진 Job 도 실패하게 됩니다. 모든 메타데이터는 기본 Job 과 외부 Job 별로 각각 저장됩니다. 커다란 시스템을 작은 모듈로 쪼개고 Job 의 흐름을 관리하고자 할때 사용할 수 있습니다. @Beanpublic Job parentJob() { return this.jobBuilderFactory.get("parentJob") .start(jobStep(null)) .next(step2()) .build();}@Beanpublic Step jobStep(JobLauncher jobLauncher) { return this.stepBuilderFactory.get("jobStep") .job(childJob()) .launcher(jobLauncher) .listener(new StepExecutionListener() { @Override public void beforeStep(StepExecution stepExecution) { stepExecution.getExecutionContext().putString("name", "user1"); } @Override public ExitStatus afterStep(StepExecution stepExecution) { return null; } }) .parametersExtractor(jobParametersExtractor()) .build();}@Beanpublic Job childJob() { return this.jobBuilderFactory.get("childJob") .start(step1()) .build();}@Beanpublic Step step1() { return stepBuilderFactory.get("step1") .tasklet(new Tasklet() { @Override public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception {// throw new RuntimeException("step1 was failed"); return RepeatStatus.FINISHED; } }) .build();}@Beanpublic Step step2() { return stepBuilderFactory.get("step2") .tasklet((contribution, chunkContext) -> { throw new RuntimeException("step2 was failed");// return RepeatStatus.FINISHED; }) .build();}@Bean public DefaultJobParametersExtractor jobParametersExtractor() { // ExecutionContext 에 설정된 Key 로 되있는 값을 가져올 수 있다. DefaultJobParametersExtractor extractor = new DefaultJobParametersExtractor(); extractor.setKeys(new String[]{"name"}); return extractor;}