2013-06-19 1 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. Конфигурирование этапа

Несмотря на относительно короткий список необходимых зависимостей для Step, это чрезвычайно сложный класс, который потенциально может содержать много соавторов. Для того, чтобы облегчить конфигурацию, весна Пакетный пространство имен может быть использован:

<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 - ItemWriter, обрабатывающий элементы, предоставленные ItemReader.

менеджер транзакций - платформа Spring PlatformTransactionManager, которая будет использоваться для начала, и совершают транзакции во время обработки.

job-repository - JobRepository, который будет использоваться для периодического хранения StepExecution и ExecutionContext во время обработки (непосредственно перед фиксацией). Для строки (одна определена внутри a) это атрибут элемента; для отдельного шага он определяется как атрибут.

commit-interval - количество элементов, которые будут обработаны до совершения транзакции.

Следует отметить, что по умолчанию для хранилища заданий по умолчанию используется «jobRepository», а менеджер транзакций по умолчанию - «transactionManger». Кроме того, ItemProcessor является необязательным, а не обязательным, поскольку элемент может быть напрямую передан от читателя к писателю.