2013-06-19 3 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

와우, 이건 합법적입니까? :디 – 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입니다.

트랜잭션 관리자 - 시작하는 데 사용되며 처리 중에 트랜잭션을 커밋합니다 ( ).

작업 저장소 - 처리 중 (커밋하기 직전)에 StepExecution 및 ExecutionContext를 주기적으로 저장하는 데 사용되는 JobRepository입니다. 인라인 (a에서 정의 된 것)의 경우 요소의 속성입니다. 독립 실행 형 단계의 경우에는 해당 특성의 특성으로 정의됩니다.

커밋 간격 - 트랜잭션이 커밋되기 전에 처리 될 항목 수입니다.

작업 저장소의 기본값은 "jobRepository"이며 트랜잭션 관리자의 기본값은 "transactionManger"입니다. 또한 ItemProcessor는 필수 항목이 아니며 선택 사항입니다. 항목을 리더에서 작성자로 직접 전달할 수 있기 때문입니다.

관련 문제