放入 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
还是原生单例更合适。
我在我的 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
还是原生单例更合适。