# Appendix A: List of ItemReaders and ItemWriters

# 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 class must be used
as a wrapper for a custom ItemReader that can identify the record
boundaries. The custom reader should mark the beginning and end of
records by returning an AggregateItem which responds true to its
query methods isHeader() and isFooter(). Note that this reader
is not part of the library of readers provided by Spring Batch
but given as a sample in spring-batch-samples.
AmqpItemReader Given a Spring AmqpTemplate, it provides
synchronous receive methods. The receiveAndConvert() method
lets you receive POJO objects.
KafkaItemReader An ItemReader that reads messages from an Apache Kafka topic.
It can be configured to read messages from multiple partitions of the same topic.
This reader stores message offsets in the execution context to support restart capabilities.
FlatFileItemReader Reads from a flat file. Includes ItemStreamand Skippable functionality. See FlatFileItemReader.
HibernateCursorItemReader Reads from a cursor based on an HQL query. SeeCursor-based ItemReaders.
HibernatePagingItemReader Reads from a paginated HQL query
ItemReaderAdapter Adapts any class to theItemReader interface.
JdbcCursorItemReader Reads from a database cursor via JDBC. SeeCursor-based ItemReaders.
JdbcPagingItemReader Given an SQL statement, pages through the rows,
such that large datasets can be read without running out of
JmsItemReader Given a Spring JmsOperations object and a JMS
Destination or destination name to which 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
ListItemReader Provides the items from a list, one at a
MongoItemReader Given a MongoOperations object and a JSON-based MongoDB
query, provides 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
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 StoredProcedureItemReader
StaxEventItemReader Reads via StAX. see StaxEventItemReader.
JsonItemReader Reads items from a Json document. see JsonItemReader.

# Item Writers

Item Writer Description
AbstractItemStreamItemWriter Abstract base class that combines theItemStream andItemWriter interfaces.
AmqpItemWriter Given a Spring AmqpTemplate, it provides
for a synchronous send method. The convertAndSend(Object)method lets you send POJO objects.
CompositeItemWriter Passes an item to the write method of each
in an injected List of ItemWriter objects.
FlatFileItemWriter Writes to a flat file. Includes ItemStream and
Skippable functionality. See FlatFileItemWriter.
GemfireItemWriter Using a GemfireOperations object, items are either written
or removed from the Gemfire instance based on the configuration of the delete
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.
ItemWriterAdapter Adapts any class to theItemWriter interface.
JdbcBatchItemWriter Uses batching features from aPreparedStatement, if available, and can
take rudimentary steps to locate a failure during aflush.
JmsItemWriter Using a JmsOperations object, items are written
to the default queue through 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.
KafkaItemWriter Using a KafkaTemplate object, items are written to the default topic through theKafkaTemplate#sendDefault(Object, Object) method using a Converter to map the key from the item.
A delete flag can also be configured to send delete events to the topic.
MimeMessageItemWriter Using Spring’s JavaMailSender, items of type MimeMessageare sent as mail messages.
MongoItemWriter Given a MongoOperations object, items are written
through 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 through thesave(Object) method or deleted through the delete(Object) per theItemWriter’s configuration
PropertyExtractingDelegatingItemWriter Extends AbstractMethodInvokingDelegatorcreating arguments on the fly. Arguments are created by retrieving
the values from the fields in the item to be processed (through aSpringBeanWrapper), based on an injected array of field
RepositoryItemWriter Given a Spring Data CrudRepository implementation,
items are saved through the method specified in the configuration.
StaxEventItemWriter Uses a Marshaller implementation to
convert each item to XML and then writes it to an XML file using
JsonFileItemWriter Uses a JsonObjectMarshaller implementation to
convert each item to Json and then writes it to an Json file.