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之前,颠覆了我的认知,

时间: 2024-08-10 00:05:51

Springbatch Chunk的疑惑的相关文章

informix删除chunk时的偏移量(offsize)的计算

最近在使用onspaces -d删除chunk时遇到点小问题. 在一台主机执行onstat -d后显示的数据库存储空间如下 Dbspaces address    number   flags    fchunk   nchunks  pgsize   flags    owner    name 700000030211028  1   0x60001    1        1        4096     N  B     informix rootdbs 70000006016a330

springbatch apache-activemq 整合(往mq中put数据,从mq中take数据)

简单测试如下: 1:收下下载apache-activemq-5.14.4 解压apache-activemq-5.14.4\bin\win64,运行activemq.bat 启动本地MQ服务器. 通过浏览器可以查看本地MQ服务器的信息. http://127.0.0.1:8161/admin/index.jsp 2: 先往mq中put数据 配置如下: <job id="jmsReadJob">         <step id="jmsReadStep&qu

springbatch操作CSV文件

一.需求分析 使用Spring Batch对CSV文件进行读写操作: 读取一个含有四个字段的CSV文件(id, name, age, score), 对文件做简单的处理, 然后输出到另一个csv文件中. 二.代码实现 1. 代码结构图: JobLaunch: 启动Job CsvItemProcessor: 对Reader数据进行处理 Student: 实体对象 input.csv: 数据读取文件 output.csv: 数据输出文件 2. applicationContext.xml <?xml

springbatch操作DB

一.需求分析 使用Spring Batch对DB进行读写操作: 从一个表中读取数据, 然后批量的插入另外一张表中. 二.代码实现 1. 代码结构图: 2. applicationContext.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="h

springbatch操作XML文件

一.需求分析 使用Spring Batch对XML文件进行读写操作: 从一个xml文件中读取商品信息, 经过简单的处理, 写入另外一个xml文件中. 二.代码实现 1. 代码结构图: 2. applicationContext.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"

SpringBatch Sample (四)(固定长格式文件读写)

前篇关于Spring Batch的文章,讲述了Spring Batch 对XML文件的读写操作. 本文将通过一个完整的实例,与大家一起讨论运用Spring Batch对固定长格式文件的读写操作.实例延续前面的例子,读取一个含有四个字段的TXT文件(ID,Name,Age,Score),对读取的字段做简单的处理,然后输出到另外一个TXT文件中. 工程结构如下图: applicationContext.xml和log4j.xml前文已经叙述过,在此不做赘述. 本文核心配置文件batch.xml内容如

走进企业级批处理框架--Springbatch

Springbatch是一个轻量级的,完全面向Spring的批处理框架,可以应用于企业级大量的数据处理系统.Spring Batch可以提供大量的,可重复的数据处理功能,包括日志记录/跟踪,事务管理,作业处理统计工作重新启动.跳过,和资源管理等重要功能.它能使业务人员专注于核心业务的开发,而将重复性的耗时工作交给系统自动处理.如数据的倒入,导出,数据的复制等工作.本文将通过一个简单的文件复制的小例子介绍SpringBatch的工作原理.首先来看相关的核心代码和配置: <?xml version=

springbatch入门练习(第二篇)

对第一遍内容的补充 <?xml version="1.0" encoding="UTF-8"?> <bean:beans xmlns="http://www.springframework.org/schema/batch" xmlns:bean="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/20

Spring-Batch处理MySQL数据后存到CSV文件

1 介绍 用Spring Batch实现了个简单的需求,从MySQL中读取用户表数据,根据生日计算年龄,将结果输出到csv文件. 1.1 准备表及数据 user test; DROP TABLE IF EXISTS `test_user`; CREATE TABLE `test_user` ( `id` int(11) NOT NULL auto_increment, `name` varchar(45) NOT NULL default '', `birthday` datetime defa