【发布时间】:2019-02-12 16:14:01
【问题描述】:
我有一个动态创建/配置的 ReportJobs 列表,这些列表作为标准 Spring 批处理作业实例实现。这些作业由 Spring Task Scheduler 执行
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
taskRegistrar.setScheduler(taskExecutor());
// create report jobs
for (Map.Entry<String, ReportConfiguration> entry : jobsConfiguration.getReports().entrySet()) {
final ReportConfiguration reportConfiguration = entry.getValue();
final Job reportJob = createReportJob(entry.getKey(), reportConfiguration);
CronTask ct = new CronTask(new Runnable() {
@Override
public void run() {
final JobParameters jobParameters = new JobParametersBuilder()
.addDate("started", new Date())
.toJobParameters();
try {
jobLauncher.run(reportJob, jobParameters);
} catch (JobExecutionException e) {
LOG.warn("cannot execute reportJob");
}
}
}, reportConfiguration.getCron());
taskRegistrar.addCronTask(ct);
}
}
如您所见,这些作业不是 spring bean,它们是动态创建的。在 ItemWriter 或 Job 处理器执行期间是否可以访问 JobParameters 等?
【问题讨论】: