Class StepParserStepFactoryBean<I,O>
java.lang.Object
org.springframework.batch.core.configuration.xml.StepParserStepFactoryBean<I,O>
- All Implemented Interfaces:
org.springframework.beans.factory.Aware
,org.springframework.beans.factory.BeanNameAware
,org.springframework.beans.factory.FactoryBean<Step>
public class StepParserStepFactoryBean<I,O>
extends Object
implements org.springframework.beans.factory.FactoryBean<Step>, org.springframework.beans.factory.BeanNameAware
This
FactoryBean
is used by the batch namespace parser to create Step
objects. It stores all of the properties that are configurable on the <step/>
(and its inner <tasklet/>). Based on which properties are configured, the
getObject()
method delegates to the appropriate class for generating the
Step
.- Since:
- 2.0
- Author:
- Dan Garrette, Josh Long, Michael Minella, Chris Schaefer, Mahmoud Ben Hassine
- See Also:
-
Field Summary
Fields inherited from interface org.springframework.beans.factory.FactoryBean
OBJECT_TYPE_ATTRIBUTE
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected Step
Creates a fault tolerantStep
.protected Step
Create a newFlowStep
.protected Step
Create a partitionStep
.protected Step
Creates a newTaskletStep
.protected TaskletStep
Create a newTaskletStep
.protected void
enhanceCommonStep
(StepBuilderHelper<?> builder) Enhances a step with attributes from the providedStepBuilderHelper
.protected void
enhanceTaskletStepBuilder
(AbstractTaskletStepBuilder<?> builder) Set the state of theAbstractTaskletStepBuilder
using the values that were established for the factory bean.protected Integer
protected CompletionPolicy
protected FaultTolerantStepBuilder<I,
O> getFaultTolerantStepBuilder
(String stepName) Creates a newFaultTolerantStepBuilder
.getName()
Create aStep
from the configuration provided.protected PartitionHandler
protected SimpleStepBuilder<I,
O> getSimpleStepBuilder
(String stepName) protected StepExecutionAggregator
protected Tasklet
org.springframework.transaction.PlatformTransactionManager
protected boolean
protected boolean
protected boolean
protected boolean
Indicates whether the step has any components that require fault tolerance.boolean
protected void
registerItemListeners
(SimpleStepBuilder<I, O> builder) boolean
Currently, all step implementations other thanTaskletStep
are instances ofAbstractStep
and do not require a transaction manager.void
setAllowStartIfComplete
(boolean allowStartIfComplete) Public setter for the flag to indicate that the step should be replayed on a restart, even if successful the first time.void
setBackOffPolicy
(org.springframework.retry.backoff.BackOffPolicy backOffPolicy) A backoff policy to be applied to the retry process.void
setBeanName
(String name) Set the bean name property, which will become the name of theStep
when it is created.void
setCacheCapacity
(int cacheCapacity) Public setter for the capacity of the cache in the retry policy.protected void
setChunk
(SimpleStepBuilder<I, O> builder) void
setChunkCompletionPolicy
(CompletionPolicy chunkCompletionPolicy) Public setter for theCompletionPolicy
that applies to the chunk level.void
setCommitInterval
(int commitInterval) Set the commit interval.void
void
setGridSize
(int gridSize) void
setHasChunkElement
(boolean hasChunkElement) void
setIsolation
(org.springframework.transaction.annotation.Isolation isolation) void
setIsReaderTransactionalQueue
(boolean isReaderTransactionalQueue) Flag to signal that the reader is transactional (usually a JMS consumer) so that items are re-presented after a rollback.void
setItemProcessor
(ItemProcessor<? super I, ? extends O> itemProcessor) void
setItemReader
(ItemReader<? extends I> itemReader) void
setItemWriter
(ItemWriter<? super O> itemWriter) void
void
setJobLauncher
(JobLauncher jobLauncher) void
setJobParametersExtractor
(JobParametersExtractor jobParametersExtractor) void
setJobRepository
(JobRepository jobRepository) Public setter forJobRepository
.void
setKeyGenerator
(KeyGenerator keyGenerator) A key generator that can be used to compare items with previously recorded items in a retry.void
setListeners
(Object[] listeners) The listeners to inject into theStep
.void
void
setNoRollbackExceptionClasses
(Collection<Class<? extends Throwable>> noRollbackExceptionClasses) Exception classes that may not cause a rollback if encountered in the right place.void
setPartitioner
(Partitioner partitioner) void
setPartitionHandler
(PartitionHandler partitionHandler) void
setProcessorTransactional
(Boolean processorTransactional) Flag to signal that the processor is transactional -- in that case, it should be called for every item in every transaction.void
setPropagation
(org.springframework.transaction.annotation.Propagation propagation) void
setRetryableExceptionClasses
(Map<Class<? extends Throwable>, Boolean> retryableExceptionClasses) Public setter for exception classes that retries the item when raised.void
setRetryContextCache
(org.springframework.retry.policy.RetryContextCache retryContextCache) void
setRetryLimit
(int retryLimit) Public setter for the retry limit.void
setRetryListeners
(org.springframework.retry.RetryListener... retryListeners) Public setter for theRetryListener
instances.void
setRetryPolicy
(org.springframework.retry.RetryPolicy retryPolicy) A retry policy to apply when exceptions occur.void
setSkipLimit
(int skipLimit) Public setter for a limit that determines skip policy.void
setSkippableExceptionClasses
(Map<Class<? extends Throwable>, Boolean> exceptionClasses) Public setter for exception classes that, when raised, do not crash the job but result in transaction rollback.void
setSkipPolicy
(SkipPolicy skipPolicy) Public setter for a skip policy.void
setStartLimit
(int startLimit) The number of times that the step should be allowed to start.void
void
setStepExecutionAggregator
(StepExecutionAggregator stepExecutionAggregator) void
setStreams
(ItemStream[] streams) The streams to inject into theStep
.void
setTaskExecutor
(org.springframework.core.task.TaskExecutor taskExecutor) Public setter for theTaskExecutor
.void
setTasklet
(Tasklet tasklet) A preconfiguredTasklet
to use.void
setThrottleLimit
(Integer throttleLimit) Deprecated, for removal: This API element is subject to removal in a future version.since 5.0, scheduled for removal in 6.0.void
setTransactionManager
(org.springframework.transaction.PlatformTransactionManager transactionManager) void
setTransactionTimeout
(int transactionTimeout) protected void
Validates that all components required to build a fault tolerant step are set.
-
Constructor Details
-
StepParserStepFactoryBean
public StepParserStepFactoryBean()
-
-
Method Details
-
getObject
Create aStep
from the configuration provided. -
requiresTransactionManager
public boolean requiresTransactionManager()Currently, all step implementations other thanTaskletStep
are instances ofAbstractStep
and do not require a transaction manager. -
enhanceCommonStep
Enhances a step with attributes from the providedStepBuilderHelper
.- Parameters:
builder
-StepBuilderHelper
representing the step to be enhanced
-
createPartitionStep
Create a partitionStep
.- Returns:
- the
Step
.
-
createFaultTolerantStep
Creates a fault tolerantStep
.- Returns:
- the
Step
.
-
getFaultTolerantStepBuilder
Creates a newFaultTolerantStepBuilder
.- Parameters:
stepName
- The name of the step used by the created builder.- Returns:
- the
FaultTolerantStepBuilder
.
-
registerItemListeners
-
createSimpleStep
Creates a newTaskletStep
.- Returns:
- the
TaskletStep
.
-
setChunk
-
getCompletionPolicy
-
getSimpleStepBuilder
-
createTaskletStep
Create a newTaskletStep
.- Returns:
- a new
TaskletStep
-
enhanceTaskletStepBuilder
Set the state of theAbstractTaskletStepBuilder
using the values that were established for the factory bean.- Parameters:
builder
- TheAbstractTaskletStepBuilder
to be modified.
-
createFlowStep
Create a newFlowStep
.- Returns:
- the
FlowStep
.
-
validateFaultTolerantSettings
protected void validateFaultTolerantSettings()Validates that all components required to build a fault tolerant step are set. -
isFaultTolerant
protected boolean isFaultTolerant()Indicates whether the step has any components that require fault tolerance.- Returns:
true
if the step is configured with any components that require fault tolerance.
-
getObjectType
- Specified by:
getObjectType
in interfaceorg.springframework.beans.factory.FactoryBean<I>
-
isSingleton
public boolean isSingleton()- Specified by:
isSingleton
in interfaceorg.springframework.beans.factory.FactoryBean<I>
-
setBeanName
Set the bean name property, which will become the name of theStep
when it is created.- Specified by:
setBeanName
in interfaceorg.springframework.beans.factory.BeanNameAware
- See Also:
-
BeanNameAware.setBeanName(java.lang.String)
-
setName
- Parameters:
name
- the name to set
-
getName
-
setFlow
- Parameters:
flow
- the flow to set
-
setJob
-
setJobParametersExtractor
-
setJobLauncher
-
setPartitioner
- Parameters:
partitioner
- the partitioner to set
-
setStepExecutionAggregator
- Parameters:
stepExecutionAggregator
- the stepExecutionAggregator to set
-
getStepExecutionAggergator
- Returns:
- The current step's
StepExecutionAggregator
-
setPartitionHandler
- Parameters:
partitionHandler
- The partitionHandler to set
-
getPartitionHandler
- Returns:
- The current step's
PartitionHandler
-
setGridSize
public void setGridSize(int gridSize) - Parameters:
gridSize
- the gridSize to set
-
setStep
- Parameters:
step
- the step to set
-
setAllowStartIfComplete
public void setAllowStartIfComplete(boolean allowStartIfComplete) Public setter for the flag to indicate that the step should be replayed on a restart, even if successful the first time.- Parameters:
allowStartIfComplete
- the shouldAllowStartIfComplete to set
-
getJobRepository
- Returns:
- The jobRepository
-
setJobRepository
Public setter forJobRepository
.- Parameters:
jobRepository
-JobRepository
instance to be used by the step.
-
setStartLimit
public void setStartLimit(int startLimit) The number of times that the step should be allowed to start.- Parameters:
startLimit
- int containing the number of times a step should be allowed to start.
-
setTasklet
A preconfiguredTasklet
to use.- Parameters:
tasklet
-Tasklet
instance to be used by step.
-
getTasklet
-
getTransactionManager
public org.springframework.transaction.PlatformTransactionManager getTransactionManager()- Returns:
- An instance of
PlatformTransactionManager
used by the step.
-
setTransactionManager
public void setTransactionManager(org.springframework.transaction.PlatformTransactionManager transactionManager) - Parameters:
transactionManager
- the transaction manager to set
-
setListeners
The listeners to inject into theStep
. Any instance ofStepListener
can be used and then receives callbacks at the appropriate stage in the step.- Parameters:
listeners
- An array of listeners
-
setNoRollbackExceptionClasses
public void setNoRollbackExceptionClasses(Collection<Class<? extends Throwable>> noRollbackExceptionClasses) Exception classes that may not cause a rollback if encountered in the right place.- Parameters:
noRollbackExceptionClasses
- The noRollbackExceptionClasses to set
-
setTransactionTimeout
public void setTransactionTimeout(int transactionTimeout) - Parameters:
transactionTimeout
- The transactionTimeout to set
-
setIsolation
public void setIsolation(org.springframework.transaction.annotation.Isolation isolation) - Parameters:
isolation
- The isolation to set
-
setPropagation
public void setPropagation(org.springframework.transaction.annotation.Propagation propagation) - Parameters:
propagation
- The propagation to set
-
setBackOffPolicy
public void setBackOffPolicy(org.springframework.retry.backoff.BackOffPolicy backOffPolicy) A backoff policy to be applied to the retry process.- Parameters:
backOffPolicy
- TheBackOffPolicy
to set
-
setRetryPolicy
public void setRetryPolicy(org.springframework.retry.RetryPolicy retryPolicy) A retry policy to apply when exceptions occur. If this is specified then the retry limit and retryable exceptions will be ignored.- Parameters:
retryPolicy
- theRetryPolicy
to set
-
setRetryContextCache
public void setRetryContextCache(org.springframework.retry.policy.RetryContextCache retryContextCache) - Parameters:
retryContextCache
- TheRetryContextCache
to set
-
setKeyGenerator
A key generator that can be used to compare items with previously recorded items in a retry. Used only if the reader is a transactional queue.- Parameters:
keyGenerator
- theKeyGenerator
to set
-
setCacheCapacity
public void setCacheCapacity(int cacheCapacity) Public setter for the capacity of the cache in the retry policy. If there are more items than the specified capacity, the the step fails without being skipped or recovered, and an exception is thrown. This guards against inadvertent infinite loops generated by item identity problems.
The default value should be high enough for most purposes. To breach the limit in a single-threaded step, you typically have to have this many failures in a single transaction. Defaults to the value in theMapRetryContextCache
.- Parameters:
cacheCapacity
- The cache capacity to set (greater than 0 else ignored)
-
setChunkCompletionPolicy
Public setter for theCompletionPolicy
that applies to the chunk level. A transaction is committed when this policy decides to complete. Defaults to aSimpleCompletionPolicy
with chunk size equal to thecommitInterval
property.- Parameters:
chunkCompletionPolicy
- ThechunkCompletionPolicy
to set.
-
setCommitInterval
public void setCommitInterval(int commitInterval) Set the commit interval. Set either this or thechunkCompletionPolicy
but not both.- Parameters:
commitInterval
- 1 by default
-
getCommitInterval
- Returns:
- The commit interval.
-
setIsReaderTransactionalQueue
public void setIsReaderTransactionalQueue(boolean isReaderTransactionalQueue) Flag to signal that the reader is transactional (usually a JMS consumer) so that items are re-presented after a rollback. The default isfalse
, and readers are assumed to be forward-only.- Parameters:
isReaderTransactionalQueue
- the value of the flag
-
setProcessorTransactional
Flag to signal that the processor is transactional -- in that case, it should be called for every item in every transaction. Iffalse
, we can cache the processor results between transactions in the case of a rollback.- Parameters:
processorTransactional
- the value to set
-
setRetryLimit
public void setRetryLimit(int retryLimit) Public setter for the retry limit. Each item can be retried up to this limit. Note that this limit includes the initial attempt to process the item. Therefore, by default,retryLimit == 1
.- Parameters:
retryLimit
- The retry limit to set. Must be greater than or equal to 1.
-
setSkipLimit
public void setSkipLimit(int skipLimit) Public setter for a limit that determines skip policy. If this value is positive, an exception in chunk processing causes the item to be skipped and no exception to be propagated until the limit is reached. If it is zero, all exceptions are propagated from the chunk and cause the step to abort.- Parameters:
skipLimit
- The value to set. The default is 0 (never skip).
-
setSkipPolicy
Public setter for a skip policy. If this value is set, the skip limit and skippable exceptions are ignored.- Parameters:
skipPolicy
- TheSkipPolicy
to set.
-
setTaskExecutor
public void setTaskExecutor(org.springframework.core.task.TaskExecutor taskExecutor) Public setter for theTaskExecutor
. If this is set, it is used to execute the chunk processing inside theStep
.- Parameters:
taskExecutor
- The taskExecutor to set.
-
setThrottleLimit
Deprecated, for removal: This API element is subject to removal in a future version.since 5.0, scheduled for removal in 6.0. This API is not intended for end users anyway. It is only used by the XML namespace parser.Public setter for the throttle limit. This limits the number of tasks queued for concurrent processing to prevent thread pools from being overwhelmed. Defaults toTaskExecutorRepeatTemplate.DEFAULT_THROTTLE_LIMIT
.- Parameters:
throttleLimit
- The throttle limit to set.
-
setItemReader
- Parameters:
itemReader
- TheItemReader
to set.
-
setItemProcessor
- Parameters:
itemProcessor
- TheItemProcessor
to set.
-
setItemWriter
- Parameters:
itemWriter
- TheItemWriter
to set.
-
setRetryListeners
public void setRetryListeners(org.springframework.retry.RetryListener... retryListeners) Public setter for theRetryListener
instances.- Parameters:
retryListeners
- TheRetryListener
instances to set.
-
setSkippableExceptionClasses
Public setter for exception classes that, when raised, do not crash the job but result in transaction rollback. The item for which handling caused the exception is skipped. -
setRetryableExceptionClasses
public void setRetryableExceptionClasses(Map<Class<? extends Throwable>, Boolean> retryableExceptionClasses) Public setter for exception classes that retries the item when raised.- Parameters:
retryableExceptionClasses
- The retryableExceptionClasses to set.
-
setStreams
The streams to inject into theStep
. Any instance ofItemStream
can be used, and it then receives callbacks at the appropriate stage in the step.- Parameters:
streams
- an array of listeners
-
setHasChunkElement
public void setHasChunkElement(boolean hasChunkElement) - Parameters:
hasChunkElement
-true
if step has <chunk/> element.
-
hasChunkElement
protected boolean hasChunkElement()- Returns:
true
if the defined step has a <chunk/> element.
-
hasTasklet
protected boolean hasTasklet()- Returns:
true
if the defined step has a <tasklet/> element.
-
hasPartitionElement
protected boolean hasPartitionElement()- Returns:
true
if the defined step has a <partition/> element.
-