2014-06-23 2 views
3

를 청크가 매개 변수화 스프링 배치 Javaconfig 커밋 간격 일명하면 같은 커밋 간격/덩어리를 크기를 매개 변수화 할 수있는 스프링 배치의 XML 기반의 구성

@Bean 
public Step step(
     ItemStreamReader<Map<String, Object>> reader, 
     ItemWriter<Map<String, Object>> writer, 
     @Value("#{jobParameters['commit.interval']}") Integer commitInterval 
) throws Exception { 
    return steps 
      .get("basicSimpleStep") 
      .<Map<String, Object>, Map<String, Object>>chunk(commitInterval) 
      .reader(reader) 
      .processor(new FilterItemProcessor()) 
      .writer(writer) 
      .build(); 
} 

하지만이 작동하지 않는, 내가 하나

수에 의한 : org.springframework.expression.spel.SpelEvaluationException : EL1008E : (POS 0) : 속성 또는 필드 'jobParameters가'형 의 개체를 찾을 수 없습니다 org.springframework.beans.factory.config.BeanExpressionContext '- 아마 공개적이지 않은가요?

또는 -

에 의해 발생 - 스텝 콩에 대한 @StepScope를 사용하는 동안 : java.lang.IllegalStateException :

은 내가 알고 단계 범위에 사용할 수있는 컨텍스트 홀더 다른 스텝 스코프 콩이 작동합니다 (단계와 같은 클래스 안에 정의 됨)

지금은 stepScope에서 작동하지만 CompletionPolicy를 사용합니다. 누군가가 "정상"방식으로 작동 가지고 있는지 알고 싶습니다하거나 https://jira.spring.io/browse/BATCH-2263

답변

0

에서 생성되는 JIRA 티켓

... 시간이라면 나는 JavaConfig과 가난한 자신감을 가지고 - 어쩌면 - 이것은 Java 구성에 대한 런타임 바인딩 동안 만 커밋 간격에 대해서만 문제가 될 수 있습니다. (SB ChunkElementParser.java 소스에서 #으로 시작하는 커밋 간격을 확인하는 코드 행이 거의없고 SimpleCompletionPolicy 단계 범위를 주입합니다). StepExecutionSimpleCompletionPolicy을 삽입하고이 솔루션이 작동하는지 확인하십시오.

또한, 나는 XML을 config로 커밋 간격을 결합 늦게 해본 적이 있지만 [오픈 티켓 Commit Interval not working as intended when used in Late Binding

으로 마지막 기회는 버전 3.0을 사용하는 경우, 당신은 또한 @JobScope와 단계 주석을 달 수 있습니다, 제목이 이 솔루션이 작동하는지 확인하십시오. 정의 단계로 @JobScope 주석을 추가

2

은 스프링 배치 3에서 일하고 :

@Bean 
@JobScope 
public Step step(
     ItemStreamReader<Map<String, Object>> reader, 
     ItemWriter<Map<String, Object>> writer, 
     @Value("#{jobParameters['commit.interval']}") Integer commitInterval 
) 

이 작업 실행의 단계 빈을 초기화합니다, jobParameters의 너무 늦은 바인딩이 경우에서 일하고있다.

관련 문제