我在我的春季批处理项目中定义了以下步骤。为简洁起见,我简化了代码。
@Bean
@JobScope
public JdbcCursorItemReader<MasterList> queryStagingDbReader(
@Value("#{jobExecutionContext['" + ExecutionContextConstants.JOB_EXPORT_STAGING_PROMOTION_START_DATE_END_DATE_GROUPINGS +"']}")
List<PromotionStartDateEndDateGrouping> promotionStartDateEndDateGroupings,
@Value("#{jobExecutionContext}")Map<String, Object> jobExecutionContext) {
jobExecutionContext.put(ExecutionContextConstants.JOB_EXPORT_STAGING_WORKING_PROMOTION_START_DATE_END_DATE, "Hello");
}
我的问题是,当我尝试按照上面的put语句添加到jobExecutionContext时,我得到...
Caused by: java.lang.UnsupportedOperationException: null
at java.util.Collections$UnmodifiableMap.put(Collections.java:1457) ~
如果这不起作用,我该如何添加到jobExecutionContext?
提前致谢
答案 0 :(得分:2)
你收到的是实际的ExecutionContext
。这是一个Map
,其值在ExecutionContext
之内。要获得实际的ExecutionContext
,您需要从JobExecution
本身获取它。话虽如此,在大多数情况下,StepScope
更合适,或者是原生单身。