今天遇到一个奇怪的问题,在一个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之前,颠覆了我的认知,

最新文章

  1. Mysql 存储引擎中InnoDB与Myisam的主要区别
  2. Android中 Bitmap和Drawable相互转换的方法
  3. angularJS 2.0 开发的简单dome
  4. C++小项目:directx11图形程序(三):graphicsclass
  5. KMP算法的详细解释及实现
  6. .net 使用memcache做缓存
  7. tomcat 和servlet之间的关系
  8. vbs脚本总结
  9. zabbix 二 zabbix agent 客户端
  10. phpwind8.7升级9.0.1过程(二)8.7正式升级9.0
  11. 关于Java中形参与实参的理解
  12. 发布项目MVC4-EF6.0出错
  13. Java中实现异常处理的基础知识
  14. 关于Eclispse连接Mysql的Jdbc
  15. 问题-[Delphi]在对GRID设置单击为编辑时,其他GRID可以,但有一个GRID不行?
  16. MSSQL - 多表查询
  17. javascript 判断IOS版本号
  18. java 文件操作 读取txt文本(兄弟常开心)
  19. 协处理器CP15介绍—MCR/MRC指令(6)
  20. centos 6.* 配置端口

热门文章

  1. 注解 和 xml 配置的优缺点【转】
  2. Request库学习
  3. 20155332 2016-2017-2 《Java程序设计》第9周学习总结
  4. JQuery基础概念--$符号的实质
  5. BroadcastReceiver的两种注册方式和使用
  6. avloadingindicatorview 使用解析
  7. Levmar 配置
  8. Ubuntu16.04+CUDA8.0+cudnn6
  9. Linux Kernel 代码艺术——编译时断言【转】
  10. python高级编程读书笔记(一)