放入 jobExecutionContext - UnsupportedOperationException

Putting into the jobExecutionContext - UnsupportedOperationException

我在我的 spring 批处理项目中定义了以下步骤。为了简洁起见,我简化了代码。

@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?

提前致谢

您收到的不是实际的 ExecutionContext。这是一个 Map,其值在 ExecutionContext 范围内。要获得实际的 ExecutionContext,您需要从 JobExecution 本身获取它。话虽如此,在大多数情况下,StepScope 还是原生单例更合适。