2017-05-15 9 views
2

春バッチジョブを設定したいのですが、エラーが表示され、意味が分かりません。春バッチ設定エラー

エラー: enter image description here

リーダー:

import org.springframework.batch.item.ItemReader; 

public class MoviesReader implements ItemReader<SearchResponseRO>, StepExecutionListener { 

    @Override 
    public SearchResponseRO read() throws Exception { 
     return new SearchResponseRO(); 
    } 
} 

プロセッサ:

import org.springframework.batch.item.ItemProcessor; 

public class MoviesProcessor implements ItemProcessor<SearchResponseRO, Movie> { 
    @Override 
    public Movie process(SearchResponseRO searchResponseRO) throws Exception { 
     return new Movie(); 
    } 
} 

私は何を変更して、エラーを修正する必要がありますか?

ありがとうございました。

答えて

5

chunk操作の種類を指定する必要があります。あなたの場合は<SearchResponseRO, Movie>になります。タイプなし

return stepBuilderFactory.get("downloadStep").<SearchResponseRO, Movie>chunk(10) 
    .reader(reader) 
    .processor(processor) 
    ..... 

、それは<Object, Object>デフォルト:あなたはchunkメソッドの定義を見てみると

stepBuilderFactory.get("test").chunk(10) 
     .reader(new ItemReader<Object>() { 
      @Override 
      public Object read() throws Exception, UnexpectedInputException, ParseException, NonTransientResourceException { 
       return null; 
      } 
     }) 
     .processor(new ItemProcessor<Object, Object>() { 
      @Override 
      public Object process(Object o) throws Exception { 
       return null; 
      } 
     }) 
     .writer(new ItemWriter<Object>() { 
      @Override 
      public void write(List<?> list) throws Exception { 

      } 
     }) 
     .build(); 

、それはintを受け入れますが、SimpleStepBuilder<I, O>を返します。 IOの型を実際に提供する方法はないため、基本的にはそれらを必要な値にキャストする必要があります。

public void castGenericReturnType() { 
    System.out.println(this.<Integer>genericReturn(1)); 
    System.out.println((Integer) genericReturn(1)); 
} 

public <I> I genericReturn(Object objectToCast) { 
    return (I) objectToCast; 
} 
+0

おかげで、それは問題を解決:私は、呼び出しを連鎖するとき.<Type>構文は、直接キャストのためのちょうど便利なので、以下の二つのことが同じであることを信じています –