2017-06-12 104 views
0

是否有任何方式在read(),updated()和open()方法之外的任何其他方式在executioncontext中添加條目。如何編輯ExecutionContext彈簧批處理

像在下面的代碼中,我試圖在close方法中添加條目。

在上述示例中,我無法更新新條目。 它只能以只讀的方式工作。我可以讀取數據但不寫入。

class abc{ 
@Autowired 
private ExecutionContext executionContext; 

    public AccountDetails mapFieldSet(FieldSet fieldSet) throws BindException { 

        executionContext.putLong(Constants.CONTEXT_COUNT_KEY.getStrValue(), 47); 

     return accDetailsObj; 
     } 

} 

我還需要在其他類中更新executionContext。 有什麼辦法嗎?

+0

你能分享你的閱讀器的配置嗎? –

回答

0

您只需使用put(String key, Object value)覆蓋已存在的值。 執行上下文由ConcurrentHashMap支持,所以如果你真的想它,你可以通過反射得到參照,然後使用computeIfAbsent等..

還指望在AbstractItemCountingItemStreamItemReader已經實現,如果從它繼承(和你)這應該已經解決了。

+0

已經用put(,)試過了。請查看更新的代碼..我想編輯mapper類中的executioncontext,其中當前代碼中我只能讀取數據。如果我在批處理表中將數據放入執行上下文中,它不會反映在步驟執行上下文表 –

+0

中,我不明白。你的目標是什麼?你想傳播'ExecutionContext'到'StepContext'嗎? –

+0

要重試作業我想要確切的值/計數哪裏工作失敗..從這一點我想重試工作..在當前的情況下,如果作業執行失敗它存儲塊的值不是確切的位置塊失敗 –