Class MultiResourceItemWriter<T>
java.lang.Object
org.springframework.batch.item.ItemStreamSupport
org.springframework.batch.item.support.AbstractItemStreamItemWriter<T>
org.springframework.batch.item.file.MultiResourceItemWriter<T>
- Type Parameters:
T
- item type
- All Implemented Interfaces:
ItemStream
,ItemStreamWriter<T>
,ItemWriter<T>
Wraps a
ResourceAwareItemWriterItemStream
and creates a new output resource
when the count of items written in current resource exceeds
setItemCountLimitPerResource(int)
. Suffix creation can be customized with
setResourceSuffixCreator(ResourceSuffixCreator)
.
Note that new resources are created only at chunk boundaries i.e. the number of items
written into one resource is between the limit set by
setItemCountLimitPerResource(int)
and (limit + chunk size).
- Author:
- Robert Kasanicky, Mahmoud Ben Hassine
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
close()
No-op.void
open
(ExecutionContext executionContext) No-op.void
setDelegate
(ResourceAwareItemWriterItemStream<? super T> delegate) Delegate used for actual writing of the output.void
setItemCountLimitPerResource
(int itemCountLimitPerResource) After this limit is exceeded the next chunk will be written into newly created resource.void
setResource
(org.springframework.core.io.Resource resource) Prototype for output resources.void
setResourceSuffixCreator
(ResourceSuffixCreator suffixCreator) Allows customization of the suffix of the created resources based on the index.void
setSaveState
(boolean saveState) Indicates that the state of the reader will be saved after each commit.void
update
(ExecutionContext executionContext) Return emptyExecutionContext
.void
Process the supplied data element.Methods inherited from class org.springframework.batch.item.ItemStreamSupport
getExecutionContextKey, getName, setExecutionContextName, setName
-
Constructor Details
-
MultiResourceItemWriter
public MultiResourceItemWriter()
-
-
Method Details
-
write
Description copied from interface:ItemWriter
Process the supplied data element. Will not be called with any null items in normal operation.- Parameters:
items
- of items to be written. Must not benull
.- Throws:
Exception
- if there are errors. The framework will catch the exception and convert or rethrow it as appropriate.
-
setResourceSuffixCreator
Allows customization of the suffix of the created resources based on the index.- Parameters:
suffixCreator
-ResourceSuffixCreator
to be used by the writer.
-
setItemCountLimitPerResource
public void setItemCountLimitPerResource(int itemCountLimitPerResource) After this limit is exceeded the next chunk will be written into newly created resource.- Parameters:
itemCountLimitPerResource
- int item threshold used to determine when a new resource should be created.
-
setDelegate
Delegate used for actual writing of the output.- Parameters:
delegate
-ResourceAwareItemWriterItemStream
that will be used to write the output.
-
setResource
public void setResource(org.springframework.core.io.Resource resource) Prototype for output resources. Actual output files will be created in the same directory and use the same name as this prototype with appended suffix (according tosetResourceSuffixCreator(ResourceSuffixCreator)
.- Parameters:
resource
- The prototype resource.
-
setSaveState
public void setSaveState(boolean saveState) Indicates that the state of the reader will be saved after each commit.- Parameters:
saveState
- true the state is saved.
-
close
Description copied from class:ItemStreamSupport
No-op.- Specified by:
close
in interfaceItemStream
- Overrides:
close
in classItemStreamSupport
- Throws:
ItemStreamException
- See Also:
-
open
Description copied from class:ItemStreamSupport
No-op.- Specified by:
open
in interfaceItemStream
- Overrides:
open
in classItemStreamSupport
- Parameters:
executionContext
- current step'sExecutionContext
. Will be the executionContext from the last run of the step on a restart.- Throws:
ItemStreamException
- See Also:
-
update
Description copied from class:ItemStreamSupport
Return emptyExecutionContext
.- Specified by:
update
in interfaceItemStream
- Overrides:
update
in classItemStreamSupport
- Parameters:
executionContext
- to be updated- Throws:
ItemStreamException
- See Also:
-