-
Spring Batch 구현 - 7[공부] 프로그래밍/Spring・Spring Boot (JAVA) 2024. 5. 14. 12:46
♧ 전체 코드 : https://github.com/woodisco/pass-batchGitHub - woodisco/pass-batch
Contribute to woodisco/pass-batch development by creating an account on GitHub.
github.com
REST API로 Job 실행시키기
① JobLauncherRequest 작성
@Getter @Setter @ToString public class JobLauncherRequest { private String name; private Properties jobParameters; public JobParameters getJobParameters() { return new JobParametersBuilder((JobExplorer) this.jobParameters).toJobParameters(); } }
② JobLauncherController 작성@RestController @RequestMapping("job") public class JobLauncherController { private final JobLauncher jobLauncher; private final JobRegistry jobRegistry; public JobLauncherController(JobLauncher jobLauncher, JobRegistry jobRegistry) { this.jobLauncher = jobLauncher; this.jobRegistry = jobRegistry; } @PostMapping("/launcher") public ExitStatus launchJob(@RequestBody JobLauncherRequest request) throws Exception { Job job = jobRegistry.getJob(request.getName()); return this.jobLauncher.run(job, request.getJobParameters()).getExitStatus(); } }
1. JobLauncher
JobLauncher는 Spring Batch에서 배치 작업(Job)을 실행하는 데 사용되는 인터페이스입니다. 쉽게 말해, 배치 작업을 시작하는 역할을 합니다.
・ 설명: 배치 작업은 보통 많은 데이터를 처리하거나 특정 시간에 반복적으로 실행되는 작업입니다. JobLauncher는 이러한 배치 작업을 트리거하고, 실행 결과를 반환합니다.
・ 사용 방법: JobLauncher를 사용하여 특정 배치 작업을 시작하려면 Job과 JobParameters를 전달해야 합니다.
2. JobRegistry
JobRegistry는 Spring Batch에서 모든 배치 작업(Job)을 등록하고 조회할 수 있는 저장소 역할을 합니다.
・ 설명: 여러 배치 작업이 있을 때, JobRegistry를 사용하면 특정 배치 작업을 쉽게 찾을 수 있습니다. JobRegistry는 각 Job을 이름으로 등록하고 관리합니다.
・ 사용 방법: 새로운 Job을 등록하거나 기존 Job을 조회할 때 사용합니다.
3. ExitStatus
ExitStatus는 Spring Batch에서 배치 작업(Job)의 실행 결과를 나타내는 클래스입니다. 작업이 성공적으로 완료되었는지, 실패했는지 등을 나타냅니다.
・ 설명: 배치 작업이 끝나면, ExitStatus를 통해 작업의 상태를 확인할 수 있습니다. 기본적으로 "COMPLETED", "FAILED" 등의 상태를 가집니다.
・ 사용 방법: 작업의 결과를 확인하거나, 후속 작업을 결정할 때 사용합니다.
③ BatchConfig 작성@EnableBatchProcessing @Configuration public class BatchConfig { /** * JobRegistry는 context에서 Job을 추적할 때 유용합니다. * JobRegistryBeanPostProcessor는 Application Context가 올라가면서 bean 등록 시, 자동으로 JobRegistry에 Job을 등록 시켜줍니다. */ @Bean public JobRegistryBeanPostProcessor jobRegistryBeanPostProcessor(JobRegistry jobRegistry) { JobRegistryBeanPostProcessor jobRegistryBeanPostProcessor = new JobRegistryBeanPostProcessor(); jobRegistryBeanPostProcessor.setJobRegistry(jobRegistry); return jobRegistryBeanPostProcessor; } }
※ JobRegistry는 컨텍스트에서 Job을 추척할 때 사용을 하는데, JobRegistryBeanPostProcessor를 등록해주어야 Job를 뽑아 사용 할 수 있다.
1. JobRegistryBeanPostProcessor
Spring Batch에서 사용되는 특별한 BeanPostProcessor입니다. Spring의 BeanPostProcessor 인터페이스를 구현하여, 콘텍스트 내의 Job들을 JobRegistry에 자동으로 등록하는 역할을 합니다.
▷ 역할과 기능
・ 자동 등록: Spring Batch 애플리케이션에서는 여러 개의 Job을 정의할 수 있습니다. JobRegistryBeanPostProcessor는 애플리케이션 콘텍스트가 초기화될 때 모든 Job 빈을 검색하고, 이를 JobRegistry에 자동으로 등록합니다.
・ 관리 편의성: 이 프로세서는 JobRegistry에 Job을 수동으로 등록할 필요를 없애줍니다.
즉, 개발자는 Job을 정의하기만 하면, JobRegistryBeanPostProcessor가 이를 자동으로 처리해 주기 때문에 편리합니다.
④ application.yml 수정server: port: 8081 batch: job: enabled: false # 기본값 true는 Spring Boot 실행 시 등록되어 있는 Job들이 실행됩니다.
출처 : 패스트캠퍼스 10개 프로젝트로 완성하는 백엔드 웹개발(Java/Spring) 초격차 패키지 Online
'[공부] 프로그래밍 > Spring・Spring Boot (JAVA)' 카테고리의 다른 글
비동기 프로그래밍 구현 (0) 2024.05.20 Spring Multi Module 구현 (0) 2024.05.16 Spring Batch 구현 - 6 (0) 2024.05.09 Spring Batch 구현 - 5 (0) 2024.05.08 Spring Batch 구현 - 4 (0) 2024.04.25