FlatFileItemReader 的主要作用就是读入一个文件,返回一组bean,他要配置的最主要的组件:
【1】 resource 文件在什么地方
【2】 lineMapper 即 这个组件将文件的每一行组装成一个bean。
其中lineMapper 又是由 lineTokenizer 和 fieldSetMapper
【1】 lineTokenizer 作用是将文件的每一行分解成一个FieldSet
【2】 fieldSetMapper 又以 FieldSet 组成一个bean 或者一组记录。
例子
<bean id="reader" class="org.springframework.batch.item.file.FlatFileItemReader">
<property name="resource" value="classpath:sampleSource.txt" />
<property name="lineMapper" >
<bean id="defaultLineMapper" class="org.springframework.batch.item.file.mapping.DefaultLineMapper">
<property name="lineTokenizer">
<bean class="org.springframework.batch.item.file.transform.DelimitedLineTokenizer">
<property name="names">
<list>
<value>name</value>
<value>age</value>
</list>
</property>
</bean>
</property>
<property name="fieldSetMapper">
<bean class="org.springframework.batch.item.file.mapping.BeanWrapperFieldSetMapper">
<property name="prototypeBeanName" value="testbean" />
</bean>
</property>
</bean>
</property>
</bean>
lineTokenizer 产生怎样的FieldSet 是可以在 lineTokenizer 中定义的,不过是通过设置fieldSetFactory这个property来定义的。
<bean class="org.springframework.batch.item.file.transform.DelimitedLineTokenizer">
<property name="names">
<list>
<value>name</value>
<value>age</value>
</list>
</property>
<property name="fieldSetFactory" value="your defined factory"/>
</bean>
问题:
【1】类型转换时放在哪个组件中完成的?
如果你看了FieldSet 的接口定义,你肯定认为类型转换是在filedSet 中进行的。其实不然。如果你仅仅设置了fieldSetFactory的DefaultFieldSetFactory并且使用了BeanWrapperFieldSetMapper的话你就上当了。
实际上 BeanWrapperFieldSetMapper 的类型转换时依靠databinder的功能实现的。也就是说是依赖于spring内部定义的propertyEditor的。不过这个影响是全局的。
可以配置如下
<bean id="customEditorConfigurer" class="org.springframework.beans.factory.config.CustomEditorConfigurer">
<property name="customEditors">
<map>
<entry key="java.util.Date" >
<bean class="com.huang.DatePropertyEditor"></bean>
</entry>
</map>
</property>
</bean>
当然也可以自己写 FieldSetMapper 利用filedSet的类型转换功能。
另外关于javabean的属性编辑器的内容下面有个很好的参考。
http://book.csdn.net/bookfiles/466/10046616417.shtml
分享到:
相关推荐
Spring Batch 是一个强大的批处理框架,它为处理大量数据提供了灵活和可扩展的解决方案。在本教程中,我们将探讨如何使用 Spring Batch 读取文本(txt)文件,并将读取到的数据处理后写入数据库。 首先,我们需要...
3. **读取器(Reader)**:Spring Batch 提供了多种数据读取器,如`FlatFileItemReader`用于读取文本文件,`JdbcPagingItemReader`用于从数据库分页读取数据。在XML配置中,它们通常作为步骤的一部分配置。 4. **...
public FlatFileItemReader<Account> itemReader() { // 配置CSV文件的读取 } @Bean public ItemProcessor, Account> processor() { // 定义数据处理逻辑 } @Bean public JdbcBatchItemWriter<Account> ...
- **FlatFileItemReader**:用于读取文本文件,如 CSV 或固定宽度格式。 - **JdbcPagingItemReader**:分页读取数据库中的数据。 - **JdbcCursorItemReader**:使用数据库游标进行数据读取。 3. **处理器...
<bean id="csvItemReader" class="org.springframework.batch.item.file.FlatFileItemReader"> <bean class="org.springframework.batch.item.file.mapping.DefaultLineMapper"> <bean class="org.spring...
- 使用`FlatFileItemReader`作为读者来读取CSV文件。这个组件可以配置为逐行读取文件,处理每一行数据。 - `FieldSetMapper`用于将CSV文件中的字段映射到业务对象(领域模型)。 - 数据分批处理可以通过`Step`的`...
1. **读取文件**:Spring Batch提供多种文件读取器,如FlatFileItemReader,支持CSV、XML等格式。 2. **处理数据库**:JdbcPagingItemReader和JdbcCursorItemReader用于数据库分页和游标读取。 3. **数据库写入**:...
<bean id="itemReader" class="org.springframework.batch.item.file.FlatFileItemReader"> <!-- 配置读取文件的相关属性 --> <!-- 配置处理器的相关逻辑 --> <bean id="itemWriter" class="org.spring...
Spring Batch 提供了多种类型的读取器和写入器,如FlatFileItemReader和FlatFileItemWriter用于处理文本文件,JdbcPagingItemReader和JdbcBatchItemWriter用于数据库操作。此外,还可以自定义处理器和存储器来适应...
例如,FlatFileItemReader用于读取文本文件,JdbcPagingItemReader用于分页读取数据库数据。 2. **事务管理**:基于Spring的事务管理能力,SpringBatch能确保批处理过程中的数据一致性。它支持本地事务和分布式事务...
- **不同类型的Reader**:探讨各种Reader组件的特点和适用场景,如FlatFileItemReader、JdbcCursorItemReader等。 - **配置示例**:给出具体的配置代码示例,帮助读者理解和应用。 **第六章:数据写入** - **...
3. **数据源和数据写入**:在读取和写入数据时,Spring Batch提供了多种适配器,如FlatFileItemReader和FlatFileItemWriter用于处理文本文件,JdbcPagingItemReader和JdbcBatchItemWriter则用于数据库操作。...
例如,FlatFileItemReader 用于读取固定格式的文本文件。 4. **ItemProcessor**:这个组件对 ItemReader 读取到的数据进行转换或处理。你可以定义自定义的逻辑来改变数据,或者执行业务规则。 5. **ItemWriter**:...
**Spring Batch** 是一个构建于 **Spring Framework** 之上的强大批处理框架,它主要用于处理大量的数据记录,如日志文件、数据库导出等场景。该框架提供了一种灵活且可扩展的方式来定义批处理作业,使得开发人员...
- **PagingItemReader** 和 **FlatFileItemReader**:常见的 ItemReader 实现,分别用于分页查询和读取文本文件。 - **ItemProcessor**:处理 Item 数据,可以进行转换、过滤等操作。 - **ItemWriter**:将处理后...
Spring Batch 提供了多种预定义的读取器,如FlatFileItemReader用于读取文本文件,JdbcPagingItemReader用于分页查询数据库。 4. **处理器(Item Processor)**:接收读取的数据,进行业务逻辑处理,然后返回处理后...
SpringBatch提供了`FlatFileItemReader`和`FlatFileItemWriter`用于读写CSV文件。在案例中,你可以看到如何配置这些组件来解析逗号分隔的数据,并将其转换为Java对象,或者将Java对象写入CSV文件。通过设置字段映射...
Spring Batch提供了多种Item Readers,如FlatFileItemReader用于读取文本文件。 4. **Item Processor**:对读取到的每个项目进行处理,可以进行数据转换、验证等操作。 5. **Item Writer**:将处理后的数据写入目标...
Spring Batch提供了一系列预定义的读取器,如FlatFileItemReader用于读取文本文件。 4. **处理器(Item Processor)**:处理器接收从读取器读取的项,并对其进行处理,可以返回一个新的项或原样返回。这是实现业务...
- **FlatFileItemReader**:用于读取文本文件中的数据。 - **XML条目读写器**:用于处理XML格式的数据。 - **StaxEventItemReader**:使用StAX API读取XML数据。 #### 十二、Item Writer - **FlatFileItemWriter**...