2013-06-19 67 views
3

我定義我的任務蕾而不ItemWriter這樣的:春天批次:微進程沒有ItemWriter

<b:tasklet> 
    <b:chunk reader="baseReader" processor="baseProcessor" commit-interval="100" /> 
</b:tasklet> 

,我得到這個錯誤:

配置問題:<b:chunk/>元素既沒有「作家」的屬性,也不是<writer/>元素。

你有什麼想法嗎? 謝謝

回答

4

我們可以定義一個塊沒有作家(只是一個讀者+處理器),我設法這樣做。看來,爲了傳遞包含塊作家步必須繼承抽象的繼父母,就像這樣:

<b:step id="task" parent="Task"> 
     <b:tasklet> 
      <b:chunk reader="baseReader" processor="baseProcessor" commit- interval="100" /> 
     </b:tasklet> 
    </b:step> 

    <b:job id="batch" parent="Batch"> 
     <b:step id="etape" parent="task" /> 
    </b:job> 

問題解決了,謝謝!

+0

哇,這是否合法? :d – NagyI

5

那麼,在一個大塊,一個讀者和一個作家是強制性的!但是,ItemProcessor是可選的。

這是從官方文檔:

5.1.1。配置步驟

儘管步驟所需的依賴項列表相對較短,但它是一個非常複雜的類,可能包含許多協作者。爲了緩解結構,彈簧批次名稱空間可用於:

<job id="sampleJob" job-repository="jobRepository"> 
<step id="step1"> 
    <tasklet transaction-manager="transactionManager"> 
     <chunk reader="itemReader" writer="itemWriter" commit-interval="10"/> 
    </tasklet> 
</step> 

以上的結構代表唯一必需的依賴關係來創建一個面向項目-步驟:

讀者 - 提供處理項目的ItemReader。

writer - 處理由ItemReader提供的項目的ItemWriter。

transaction-manager - Spring的PlatformTransactionManager將用於開始,並且 在處理期間提交事務。

job-repository - 將用於在處理期間(即將提交之前)定期存儲StepExecution和ExecutionContext的JobRepository。對於內聯(在a中定義的內聯),它是元素上的一個屬性;對於一個獨立的步驟,它被定義爲一個屬性。

commit-interval - 提交事務之前要處理的項目數。

應該注意的是,job-repository默認爲「jobRepository」,而transaction-manager默認爲「transactionManger」。此外,ItemProcessor是可選的,不需要,因爲該項目可以直接從閱讀器傳遞給作者。