# List of ItemReaders

## Item Readers

### 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

## Item Writers

### 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]