Class SynchronizedItemStreamReader<T>
java.lang.Object
org.springframework.batch.item.support.SynchronizedItemStreamReader<T>
- Type Parameters:
- T- type of object being read
- All Implemented Interfaces:
- ItemReader<T>,- ItemStream,- ItemStreamReader<T>,- org.springframework.beans.factory.InitializingBean
public class SynchronizedItemStreamReader<T>
extends Object
implements ItemStreamReader<T>, org.springframework.beans.factory.InitializingBean
This is a simple ItemStreamReader decorator with a synchronized ItemReader.read()
 method - which makes a non-thread-safe ItemReader thread-safe.
 
However, if reprocessing an item is problematic then using this will make a job not restartable.
Here is the motivation behind this class: https://stackoverflow.com/a/20002493/2910265
- Since:
- 3.0.4
- Author:
- Matthew Ouyang, Mahmoud Ben Hassine
- 
Constructor SummaryConstructors
- 
Method SummaryModifier and TypeMethodDescriptionvoidvoidclose()If any resources are needed for the stream to operate they need to be destroyed here.voidopen(ExecutionContext executionContext) Open the stream for the providedExecutionContext.read()This delegates to the read method of thedelegatevoidsetDelegate(ItemStreamReader<T> delegate) voidupdate(ExecutionContext executionContext) Indicates that the execution context provided during open is about to be saved.
- 
Constructor Details- 
SynchronizedItemStreamReaderpublic SynchronizedItemStreamReader()
 
- 
- 
Method Details- 
setDelegate
- 
readThis delegates to the read method of thedelegate- Specified by:
- readin interface- ItemReader<T>
- Returns:
- T the item to be processed or nullif the data source is exhausted
- Throws:
- ParseException- if there is a problem parsing the current record (but the next one may still be valid)
- NonTransientResourceException- if there is a fatal exception in the underlying resource. After throwing this exception implementations should endeavour to return null from subsequent calls to read.
- UnexpectedInputException- if there is an uncategorised problem with the input data. Assume potentially transient, so subsequent calls to read might succeed.
- Exception- if an there is a non-specific error.
 
- 
closepublic void close()Description copied from interface:ItemStreamIf any resources are needed for the stream to operate they need to be destroyed here. Once this method has been called all other methods (except open) may throw an exception.- Specified by:
- closein interface- ItemStream
 
- 
openDescription copied from interface:ItemStreamOpen the stream for the providedExecutionContext.- Specified by:
- openin interface- ItemStream
- Parameters:
- executionContext- current step's- ExecutionContext. Will be the executionContext from the last run of the step on a restart.
 
- 
updateDescription copied from interface:ItemStreamIndicates that the execution context provided during open is about to be saved. If any state is remaining, but has not been put in the context, it should be added here.- Specified by:
- updatein interface- ItemStream
- Parameters:
- executionContext- to be updated
 
- 
afterPropertiesSet- Specified by:
- afterPropertiesSetin interface- org.springframework.beans.factory.InitializingBean
- Throws:
- Exception
 
 
-