Spring批处理是否提供任何动态/通用文件编写器?例如,如果我有多个生成文件的要求,并且我有一个为每个目的创建的视图,我想要做的就是指定视图名称,我想要spring-batch从视图中提取数据到一个平面文件列标题。这就像使用dbviz或sql developer一样简单,只需将查询结果导出到文件即可。
最近我有4个不同的将数据提取到文件的要求,我重复了配置文件,并创建了一个记录bean和记录映射器,将bean映射到每个文件的视图列。我不是每次都重复这整个过程,而是希望看看Spring批处理或任何其他java框架是否提供了一种基于表及其列提取文件的通用方法,而无需编写结果集映射器或处理字段提取器。
我可以构建一个通用的弹簧批处理文件提取器,但是想检查spring-batch是否已经这样做了,这似乎是一个基本的东西?
此外,如果我创建一个通用提取器,那么bean的属性将基于视图的列名称有点动态。所以在这种情况下,如果我有大约50列我不想在fieldExtractor中指定每个属性,我想要提取所有属性。目前我在spring config中指定属性,如下所示,但我不想说明属性名称。我只想说提取所有属性。这可能吗?
<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>