이 페이지의 구성
JobExplorer
JobExplorer
본 문서는 Spring Batch 5.2 - Advanced Metadata Usage (Querying the Repository) 와 정합성을 유지한다.
개요
고급 메타데이터 기능을 쓰기 전에, 기존 실행(execution) 정보를 조회할 수 있어야 한다. 이 역할을 하는 것이 JobExplorer 인터페이스이다. 메서드 시그니처만 보아도 JobExplorer는 JobRepository의 읽기 전용 버전이며, JobRepository와 마찬가지로 팩토리 빈으로 쉽게 설정할 수 있다.
JobExplorer 인터페이스
public interface JobExplorer {
List<JobInstance> getJobInstances(String jobName, int start, int count);
JobExecution getJobExecution(Long executionId);
StepExecution getStepExecution(Long jobExecutionId, Long stepExecutionId);
JobInstance getJobInstance(Long instanceId);
List<JobExecution> getJobExecutions(JobInstance jobInstance);
Set<JobExecution> findRunningJobExecutions(String jobName);
}
| 메서드 | 설명 |
|---|---|
getJobInstances(String jobName, int start, int count) |
Job 이름별 JobInstance 목록을 페이징 조회 |
getJobExecution(Long executionId) |
실행 ID로 JobExecution 조회 |
getStepExecution(Long jobExecutionId, Long stepExecutionId) |
Job 실행 ID와 Step 실행 ID로 StepExecution 조회 |
getJobInstance(Long instanceId) |
JobInstance ID로 JobInstance 조회 |
getJobExecutions(JobInstance jobInstance) |
특정 JobInstance의 모든 JobExecution 목록 조회 |
findRunningJobExecutions(String jobName) |
해당 Job 이름으로 실행 중인 JobExecution 집합 조회 |
설정
Java 설정
DefaultBatchConfiguration을 상속한 설정 클래스에서 JobExplorer 빈을 정의한다. @EnableBatchProcessing 사용 시 필요한 인프라 빈이 제공되므로, DataSource만 설정하면 된다.
@Bean
public JobExplorer jobExplorer() throws Exception {
JobExplorerFactoryBean factoryBean = new JobExplorerFactoryBean();
factoryBean.setDataSource(this.dataSource);
return factoryBean.getObject();
}
JobRepository에 테이블 접두어를 사용하는 경우, JobExplorer도 동일한 접두어를 사용해야 같은 메타데이터 테이블을 참조한다.
@Bean
public JobExplorer jobExplorer() throws Exception {
JobExplorerFactoryBean factoryBean = new JobExplorerFactoryBean();
factoryBean.setDataSource(this.dataSource);
factoryBean.setTablePrefix("SYSTEM.");
return factoryBean.getObject();
}
XML 설정
<bean id="jobExplorer" class="org.springframework.batch.core.explore.support.JobExplorerFactoryBean"
p:dataSource-ref="dataSource" />
테이블 접두어를 지정할 때:
<bean id="jobExplorer" class="org.springframework.batch.core.explore.support.JobExplorerFactoryBean"
p:dataSource-ref="dataSource"
p:tablePrefix="SYSTEM." />
JobRepository에서 테이블 접두어를 바꾼 경우,JobExplorer에도 같은 접두어를 설정해야 한다. 두 컴포넌트가 동일한 배치 메타데이터 테이블을 사용하기 때문이다.
JobOperator와의 관계
JobExplorer는 읽기 전용 조회용으로 쓰이고, JobOperator는 이 메타데이터를 활용해 Job 시작·재시작·정지·요약 등 제어 및 모니터링 작업을 수행한다. SimpleJobOperator는 내부적으로 JobExplorer를 사용한다. 자세한 내용은
JobOperator
를 참고한다.