放入jobExecutionContext - UnsupportedOperationException

时间:2016-08-09 03:16:18

标签: spring spring-batch

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

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

提前致谢

1 个答案:

答案 0 :(得分:2)

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