repository를 통한 job을 만들어 보자. 목표 1. findAll로 데이터 모두 불러와서 2. 각 row를 수정 3. 각 row를 save로 저장(update) @Configuration public class ImportJob { @Autowired private JobBuilderFactory jobBuilderFactory; @Autowired private StepBuilderFactory stepBuilderFactory; } @Repository public interface BookRepository extends JpaRepository{ } 1. findAll로 데이터 모두 불러와서 ........... @Bean public Job job() throws Exception { ..
(p246) StepBuilder에 .allowStartIfComplete(true) 추가 ......... @Bean public Step importStep01() throws Exception { return this.stepBuilderFactory.get("importStep01") .chunk(100) .reader(importReader01(null)) .processor(importProcessor01()) .writer(importWriter01(null)) .allowStartIfComplete(true) .build(); } ......... Job의 ExitStatus가 COMPLETE라면 Job 인스턴스를 다시 실행할 수 없다.
참고: 스프링배치 완벽가이드 2/e, 마이클 미넬라 지음 (p206~214) @RequestMapping으로 url등록하고 method 안에서 job을 호출 @RestController public class TestController { @Autowired private JobLauncher jobLauncher; @Autowired private ApplicationContext context; @RequestMapping(value = "/batch") public ExitStatus test() throws JobExecutionAlreadyRunningException, JobRestartException, JobInstanceAlreadyCompleteException, JobParameter..
참고: 스프링배치 완벽가이드 2/e, 마이클 미넬라 지음 (p204~214) 이거 왜 할랬는데? 책보면서 job, step 작성 후, 작성한 job 실행하는 방법이 1. IDE에서 서버를 껏다 키던가, 2. build후, jar 파일을 terminal에서 실행(IDE에서 서버 키는거랑 똑같음) 근데 서버 재기동 할때마다 여러 job들이 실행되면 곤란하니까, 원하는 시간 or 특정 이벤트 호출 시 job이 실행했으면 했다. 목표 서버 재기동 시, job실행을 막을꺼임. 방법 // application.properties # 애플리케이션이 기동되는 시점에서 배치 job이 실행되지 않음 spring.batch.job.enabled=false 기본값은 true 수정 후엔 자동 재시동 말고 서버를 완전히 껏다가 ..