首页 > 代码库 > Springbatch Chunk的疑惑
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的疑惑
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。