Table A.1. Available Item Readers
| Item Reader | Type of Item Provided | Description | 
|---|---|---|
| ListItemReader | java.lang.Object | Provides the items from a list, one at a time | 
| ValidatingItemReader | java.lang.Object | A simple extension of DelegatingItemReader that provides for validation before returning input. | 
| AggregateItemReader | java.util.Collection | An ItemReader that delivers a list as its item, storing up objects from the injected ItemReader until they are ready to be packed out as a collection. This ItemReader should mark the beginning and end of records with the constant values in FieldSetMapper AggregateItemReader#BEGIN_RECORD and AggregateItemReader#END_RECORD | 
| DelegatingItemReader | java.lang.Object | Extends AbstractMethodInvokingDelegator, which enables dynamically calling of a custom method of the injected object. Provides a convenient API for dynamic method invocation shielding subclasses from the low-level details and exception handling. | 
| FlatFileItemReader | java.lang.String | Reads from a flat file, includes ItemStream and Skippable functionality. See section on Read from a File | 
| StaxEventItemReader | java.lang.Object | Reads via StAX. See HOWTO - Read from a File | 
| JdbcCursorItemReader | java.lang.Object | Reads from a database cursor via JDBC. See HOWTO - Read from a Database | 
| DrivingQueryItemReader | java.lang.Object | Base class for operations that read from a database based on a single driving query. Configured by injecting a KeyGenerator object. See HOWTO - Read from a Database | 
| HibernateCursorItemReader | java.lang.Object | Reads from a cursor based on an HQL query. See section on Reading from a Database | 
| IbatisDrivingQueryItemReader | java.lang.Object | Reads via iBATIS based on a driving query. See HOWTO - Read from a Database | 
| JmsItemReader | javax.jms.Message | Given a Spring JmsOperations object and a JMS Destination or destination name to send errors, provides items received through the injected JmsOperations receive() method | 
Table A.2. Available Item Writers
| Item Writer | Type of Item Written | Description | 
|---|---|---|
| CompositeItemWriter | java.lang.Object | Passes an item to the process method of each in an injected List of ItemWriter objects | 
| DelegatingItemWriter | java.lang.Object | Wraps ItemWriter and is BeanAware allowing it to respond to Spring Bean events like afterPropertiesSet(). | 
| PropertyExtractingDelegatingItemWriter | java.lang.Object | Extends AbstractMethodInvokingDelegator creating arguments on the fly. Arguments are created by retrieving the values from the fields in the item to be processed (via a SpringBeanWrapper) based on an injected array of field name | 
| ItemTransformerItemWriter | java.lang.Object | Extends ItemWriterItemWriter by defining its doProcess method to call an injected ItemTransformer | 
| FlatFileItemWriter | java.lang.Object | Attempts to convert the item to a String, Collection or array using an injected Coverter and then recurses. See [HOWTO - Write to a File] | 
| HibernateAwareItemWriter | java.lang.Object | This item writer is hibernate session aware and handles some transaction-related work that a non-"hibernate aware" item writer would not need to know about and then delegates to another item writer to do the actual writing. See [HOWTO - Write to a Database] | 
| StaxEventWriterItemWriter | java.lang.Object | Uses an ObjectToXmlSerializer implementation to convert each item to XML and then writes it to an XML file using StAX. See [HOWTO - Write to a File] |