我有一个春季批处理工作,其中我需要在beforeStep中设置工作参数 我在下面使用相同的代码:
@Override
public void beforeJob(JobExecution jobExecution) {
String pid = fetchPid();
jobExecution
.getJobParameters()
.getParameters()
.put("pid", new JobParameter(pid));
}
运行以上代码并进行调试时,我发现jobparameters中不存在pid
。这有什么问题吗?
答案 0 :(得分:0)
这有什么问题吗?
JobParameters#getParameters
返回不可修改的参数映射(请参见Javadoc)。因此,按原样添加pid
键将无法正常工作。
我需要在beforeStep中设置作业参数
我猜您的意思是beforeJob
,而不是beforeStep
,因为您的代码显示了beforeJob
方法。使用JobExecutionListener
添加参数为时已晚,因为参数用于标识实例,并且在调用beforeJob
时,已经使用给定的参数启动了执行。您需要准备参数 upfront ,然后使用它们通过jobLauncher.run(job, jobParameters)
启动作业。