这里仔细研究一下JobRepository做了一些什么事情。
JobRepository接口
public interface JobRepository {
//根据传入的job的名称和job运行参数查看对应的JOB是否存在
boolean isJobInstanceExists(String jobName, JobParameters jobParameters);
//创建一个新的JobInstance(这个概念在上篇总结过了。)
JobInstance createJobInstance(String jobName, JobParameters jobParameters);
//根据传进来的jobInstance,job运行参数,job的配置路径创建Job执行记录
JobExecution createJobExecution(JobInstance jobInstance, JobParameters jobParameters, String jobConfigurationLocation);
//根据job名称和job运行参数创建Job运行记录(这个方法和createJobInstance这个的区别之后实现类会详细分析)
JobExecution createJobExecution(String jobName, JobParameters jobParameters)
throws JobExecutionAlreadyRunningException, JobRestartException, JobInstanceAlreadyCompleteException;
void add(StepExecution stepExecution);
void addAll(Collection<StepExecution> stepExecutions);
void update(StepExecution stepExecution);
void updateExecutionContext(JobExecution jobExecution);
@Nullable
StepExecution getLastStepExecution(JobInstance jobInstance, String stepName);
JobExecution getLastJobExecution(String jobName, JobParameters jobParameters);
}
我们来看看它的默认实现类SimpleJobRepository:
public class SimpleJobRepository implements JobRepository {
private static final Log logger = LogFactory.getLog(SimpleJobRepository.class);
private JobInstanceDao jobInstanceDao;
private JobExecutionDao jobExecutionDao;
private StepExecutionDao stepExecutionDao;
private ExecutionContextDao ecDao;
....
各个属性的dao注入进来。