按照Spring Batch 之 Sample(CSV文件操作)(四)
的方式配置好csvItemReader,
发现读入的数据很是奇怪,通过修改配置文件发现,
commit-interval="1" 的时候,例程是没有问题的.如果大于1,例如设为50,则会把第50条数据,读50遍进来. 跟踪代码org.springframework.batch.item.file.mapping.BeanWrapperFieldSetMapper的getBean()方法后发现,当配置文件如下时
<bean:property name="fieldSetMapper"> <bean:bean class="org.springframework.batch.item.file.mapping.BeanWrapperFieldSetMapper"> <bean:property name="prototypeBeanName" value="student"></bean:property> </bean:bean> </bean:property>
prototypeBeanName会导致Chunk读取的数据会设置到唯一的指定Bean内,所以只有Chunk读取的最后一行数据能够保留在Bean中。 修改方式,采用targetType代替prototypeBeanName。 <!-- property name="prototypeBeanName" value="mongoDataHistory"></property--> <property name="targetType" value="实体Bean的类名"></property>
时间: 2024-12-05 16:02:46