![](/img/trans.png)
[英]Spring Batch asynchronous processor configuration for best performance
[英]Spring Batch configuration error in processor
我想配置Spring Batch作业,但是我收到以下错误,我该如何解决?
读者:
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();
}
}
为了解决问题,我需要更改什么?
谢谢。
您需要为chunk
操作指定类型。 在你的情况下, <SearchResponseRO, Movie>
。
return stepBuilderFactory.get("downloadStep").<SearchResponseRO, Movie>chunk(10)
.reader(reader)
.processor(processor)
.....
没有类型,它默认为<Object, Object>
:
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();
如果你看一下chunk
方法的定义,它接受一个int
,但返回SimpleStepBuilder<I, O>
。 因为无法实际为I
和O
提供类型, I
您必须将它们基本上转换为您想要的值。 我相信.<Type>
语法只是在链接调用时直接转换的方便,所以以下两件事应该是相同的:
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;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.