Spring 批量动态文件编写器

Spring batch dynamic file writer

spring批处理是否提供任何dynamic/generic文件编写器?例如,如果我有多个生成文件的要求,并且我为每个目的创建了一个视图,我想做的就是指定视图名称,我希望 spring-batch 将数据从视图中提取到一个平面带有列标题的文件。这个很简单,就好像你用过dbviz或者sql developer一样,把一个查询的结果导出到一个文件里就可以了。

最近我有 4 个不同的提取数据到文件的要求,我重复了配置文件并创建了一个记录 bean 和记录映射器以将 bean 映射到每个文件的视图列。我不是每次都重复整个过程,而是想看看 Spring 批处理或任何其他 java 框架是否提供了一种通用方法来提取基于 table 及其列的文件而无需编写结果集映射器或处理字段提取器。

我可以构建一个通用的 spring 批处理文件提取器,但想检查 spring-batch 是否已经这样做了,这似乎是一件基本的事情?

此外,如果我创建一个通用提取器,则 bean 的属性将根据视图的列名称有点动态。所以在那种情况下,如果我有大约 50 列,我不想在 fieldExtractor 中指定每个属性,我希望提取所有属性。目前我在 spring 配置中指定属性,如下所示,但我不想指定属性名称。我只想说提取所有属性。这可能吗?

<bean id="CsvItemWriter" class="some.class.FileWriter" scope="step">
  <property name="resource" value="file://#{jobParameters['file.name']}"/>        

  <property name="shouldDeleteIfExists" value="true" />
  <property name="lineAggregator">
     <bean class="org.springframework.batch.item.file.transform.DelimitedLineAggregator">
        <property name="delimiter">
              <util:constant static-field="org.springframework.batch.item.file.transform.DelimitedLineTokenizer.DELIMITER_TAB" />
        </property>

        <property name="fieldExtractor"> <bean class="org.springframework.batch.item.file.transform.BeanWrapperFieldExtractor">
              <property name="names" value="name.last, name.first, name.middle, birthDate, gender,  homePhone, cellPhone"/>
           </bean>
        </property>
     </bean>
  </property>

如果有人需要它,我在 SO 中发现了一个很难找到的类似问题。我正在使用提到的 columnMapRowMapper here