我正在使用 Spring Batch 自动读取 csv 文件并将每一行映射到一个对象中。下面有代码。csv 文件中的列是 ID、field1、field2、field3。这是我在 lineTokenizer 中写的顺序。但是,FlatFileItemReader 没有按此顺序读取文件。相反,它似乎以随机顺序读取,首先读取 field2,然后是 ID,然后是 field3,然后是 field1。但我希望它首先读取 ID,因为我正在尝试编写一个将 ID 映射到每个字段的映射。有没有办法改变 FlatFileItemReader 读取 csv 中的列的顺序?
<bean id="mappedPosition" class="com.jpmorgan.ib.colopt.input.MappedPosition" scope="prototype" />
<bean id="positionFileItemReader" class="org.springframework.batch.item.file.FlatFileItemReader">
<property name="resource" value="position.csv" />
<property name="lineMapper">
<bean class="org.springframework.batch.item.file.mapping.DefaultLineMapper">
<property name="lineTokenizer">
<bean class="org.springframework.batch.item.file.transform.DelimitedLineTokenizer">
<property name="names" value="ID, field1, field2, field3" />
</bean>
</property>
<property name="fieldSetMapper">
<bean class="org.springframework.batch.item.file.mapping.BeanWrapperFieldSetMapper">
<property name="prototypeBeanName" value="mappedPosition"/>
</bean>
</property>
</bean>
</property>
</bean>