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
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