我正在使用 DelimitedLineTokenizer 使用 FlatFileItemReader 读取 txt 文件。但是,有没有办法避免对字段的“名称”属性进行硬编码?我们可以使用任何 bean 吗?
<bean id="employeeReader" class="org.springframework.batch.item.file.FlatFileItemReader"
scope="step">
<property name="resource" value="#{jobParameters['input.file.name']}" />
<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="empId,empName,empAge" />
</bean>
</property>
<property name="fieldSetMapper">
<bean
class="org.springframework.batch.item.file.mapping.BeanWrapperFieldSetMapper">
<property name="targetType" value="com.example.Employee" />
</bean>
</property>
</bean>
</property>
</bean>
最佳答案
目前还没有,因为LineTokenizer
的工作结果是一个FieldSet
。 FieldSet
就像文件的 ResultSet
一样。因此,就像在 ResultSet 中一样,我们需要通过名称来引用每个“列”。 LineTokenizer 无法洞察数据的最终位置(对象是什么样子),因此我们无法对其进行内省(introspection)。如果您想采用更动态的方法,则需要实现自己的 LineMapper
,它将两个函数组合在一起,以允许这种类型的内省(introspection)。
一如既往,拉取请求受到赞赏!
关于spring - 如何避免 DelimitedLineTokenizer 名称中的硬编码名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32994242/