Springbatch Chunk的疑惑
Posted 注销了
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Springbatch Chunk的疑惑相关的知识,希望对你有一定的参考价值。
今天遇到一个奇怪的问题,在一个step里有一个chunk,还有一个step的listener,这个listener实际上是一个headerCallback,这个headerCallback里面有一个@beforeStep方法和一个writerHeader方法:
@BeforeStep public void beforeStep(StepExecution stepExecution) { this.stepExecution = stepExecution; } @Override public void writeHeader(Writer writer) throws IOException { //略 }
然后在chunk的writer里面,也引用了这个类:
<bean id="trustActBatTrsFileWriter" class="org.springframework.batch.item.support.CompositeItemWriter" scope="step"> <property name="delegates"> <list> <bean class="org.springframework.batch.item.file.FlatFileItemWriter"> <property name="resource" value="file:#{jobParameters[uploadFilePath]}#{jobParameters[uploadFileName]}.txt" /> <property name="lineAggregator"> <bean class="com.csii.bank.core.batch.support.writer.PrefixSuffixDelimitedLineAggregator"> <property name="delimiter" value="|" /> <property name="delimiterAsSuffix" value="false" /> <property name="fieldExtractor"> <bean class="org.springframework.batch.item.file.transform.BeanWrapperFieldExtractor"> <property name="names" value="略" /> </bean> </property> </bean> </property> <property name="headerCallback" ref="trustActBatPayHeaderCallback"/> </bean> </list> </property> </bean>
然后我发现这个JOB执行的时候,一上来就执行了这个trustActBatPayHeaderCallback的@beforeStep方法,这很正常,因为他是step级别的监听器,而且是@beforeStep,但是,reader一结束立马就执行了,,立马又执行了writeHeader方法,,居然是在processor之前,颠覆了我的认知,
以上是关于Springbatch Chunk的疑惑的主要内容,如果未能解决你的问题,请参考以下文章
SpringBatch的ItemReader,ItenWriter是如何进行读写的