Appendix A. List of ItemReaders and ItemWriters

A.1 Item Readers

Table A.1. Available Item Readers

Item Reader Description
AbstractItemCountingItemStreamItemReader Abstract base class that provides basic restart capabilities by counting the number of items returned from an ItemReader.
AggregateItemReader 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
AmqpItemReader Given a Spring AmqpTemplate it provides synchronous receive methods. The receiveAndConvert() method lets you receive POJO objects.
FlatFileItemReader Reads from a flat file. Includes ItemStream and Skippable functionality. See section on Read from a File
HibernateCursorItemReader Reads from a cursor based on an HQL query. See section on Reading from a Database
HibernatePagingItemReader Reads from a paginated HQL query
IbatisPagingItemReader Reads via iBATIS based on a query. Pages through the rows so that large datasets can be read without running out of memory. See HOWTO - Read from a Database. This ItemReader is now deprecated as of Spring Batch 3.0.
ItemReaderAdapter Adapts any class to the ItemReader interface.
JdbcCursorItemReader Reads from a database cursor via JDBC. See HOWTO - Read from a Database
JdbcPagingItemReader Given a SQL statement, pages through the rows, such that large datasets can be read without running out of memory
JmsItemReader Given a Spring JmsOperations object and a JMS Destination or destination name to send errors, provides items received through the injected JmsOperations receive() method
JpaPagingItemReader Given a JPQL statement, pages through the rows, such that large datasets can be read without running out of memory
ListItemReader Provides the items from a list, one at a time
MongoItemReader Given a MongoOperations object and JSON based MongoDB query, proides items received from the MongoOperations find method
Neo4jItemReader Given a Neo4jOperations object and the components of a Cyhper query, items are returned as the result of the Neo4jOperations.query method
RepositoryItemReader Given a Spring Data PagingAndSortingRepository object, a Sort and the name of method to execute, returns items provided by the Spring Data repository implementation
StoredProcedureItemReader Reads from a database cursor resulting from the execution of a database stored procedure. See HOWTO - Read from a Database
StaxEventItemReader Reads via StAX. See HOWTO - Read from a File

A.2 Item Writers

Table A.2. Available Item Writers

Item Writer Description
AbstractItemStreamItemWriter Abstract base class that combines the ItemStream and ItemWriter interfaces.
AmqpItemWriter Given a Spring AmqpTemplate it provides for synchronous send method. The convertAndSend(Object) method lets you send POJO objects.
CompositeItemWriter Passes an item to the process method of each in an injected List of ItemWriter objects
FlatFileItemWriter Writes to a flat file. Includes ItemStream and Skippable functionality. See section on Writing to a File
GemfireItemWriter Using a GemfireOperations object, items wre either written or removed from the Gemfire instance based on the configuration of the delete flag
HibernateItemWriter 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.
IbatisBatchItemWriter Writes items in a batch using the iBatis API's directly. This ItemWriter is deprecated as of Spring Batch 3.0.
ItemWriterAdapter Adapts any class to the ItemWriter interface.
JdbcBatchItemWriter Uses batching features from a PreparedStatement, if available, and can take rudimentary steps to locate a failure during a flush.
JmsItemWriter Using a JmsOperations object, items are written to the default queue via the JmsOperations.convertAndSend() method
JpaItemWriter This item writer is JPA EntityManager aware and handles some transaction-related work that a non-"jpa aware" ItemWriter would not need to know about and then delegates to another writer to do the actual writing.
MimeMessageItemWriter Using Spring's JavaMailSender, items of type MimeMessage are sent as mail messages
MongoItemWriter Given a MongoOperations object, items are written via the MongoOperations.save(Object) method. The actual write is delayed until the last possible moment before the transaction commits.
Neo4jItemWriter Given a Neo4jOperations object, items are persisted via the save(Object) method or deleted via the delete(Object) per the ItemWriter's configuration
PropertyExtractingDelegatingItemWriter 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
RepositoryItemWriter Given a Spring Data CrudRepository implementation, items are saved via the method specified in the configuration.
StaxEventItemWriter Uses an ObjectToXmlSerializer implementation to convert each item to XML and then writes it to an XML file using StAX.