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
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected StepCreates a fault tolerantStep.protected StepCreate a newFlowStep.protected StepCreate a partitionStep.protected StepCreates a newTaskletStep.protected TaskletStepCreate a newTaskletStep.protected voidenhanceCommonStep(StepBuilderHelper<?> builder) Enhances a step with attributes from the providedStepBuilderHelper.protected voidenhanceTaskletStepBuilder(AbstractTaskletStepBuilder<?> builder) Set the state of theAbstractTaskletStepBuilderusing the values that were established for the factory bean.protected Integerprotected CompletionPolicyprotected FaultTolerantStepBuilder<I,O> getFaultTolerantStepBuilder(String stepName) Creates a newFaultTolerantStepBuilder.getName()Create aStepfrom the configuration provided.protected PartitionHandlerprotected SimpleStepBuilder<I,O> getSimpleStepBuilder(String stepName) protected StepExecutionAggregatorprotected Taskletorg.springframework.transaction.PlatformTransactionManagerprotected booleanprotected booleanprotected booleanprotected booleanIndicates whether the step has any components that require fault tolerance.booleanprotected voidregisterItemListeners(SimpleStepBuilder<I, O> builder) booleanCurrently, all step implementations other thanTaskletStepare instances ofAbstractStepand do not require a transaction manager.voidsetAllowStartIfComplete(boolean allowStartIfComplete) Public setter for the flag to indicate that the step should be replayed on a restart, even if successful the first time.voidsetBackOffPolicy(org.springframework.retry.backoff.BackOffPolicy backOffPolicy) A backoff policy to be applied to the retry process.voidsetBeanName(String name) Set the bean name property, which will become the name of theStepwhen it is created.voidsetCacheCapacity(int cacheCapacity) Public setter for the capacity of the cache in the retry policy.protected voidsetChunk(SimpleStepBuilder<I, O> builder) voidsetChunkCompletionPolicy(CompletionPolicy chunkCompletionPolicy) Public setter for theCompletionPolicythat applies to the chunk level.voidsetCommitInterval(int commitInterval) Set the commit interval.voidvoidsetGridSize(int gridSize) voidsetHasChunkElement(boolean hasChunkElement) voidsetIsolation(org.springframework.transaction.annotation.Isolation isolation) voidsetIsReaderTransactionalQueue(boolean isReaderTransactionalQueue) Flag to signal that the reader is transactional (usually a JMS consumer) so that items are re-presented after a rollback.voidsetItemProcessor(ItemProcessor<? super I, ? extends O> itemProcessor) voidsetItemReader(ItemReader<? extends I> itemReader) voidsetItemWriter(ItemWriter<? super O> itemWriter) voidvoidsetJobLauncher(JobLauncher jobLauncher) voidsetJobParametersExtractor(JobParametersExtractor jobParametersExtractor) voidsetJobRepository(JobRepository jobRepository) Public setter forJobRepository.voidsetKeyGenerator(KeyGenerator keyGenerator) A key generator that can be used to compare items with previously recorded items in a retry.voidsetListeners(Object[] listeners) The listeners to inject into theStep.voidvoidsetNoRollbackExceptionClasses(Collection<Class<? extends Throwable>> noRollbackExceptionClasses) Exception classes that may not cause a rollback if encountered in the right place.voidsetPartitioner(Partitioner partitioner) voidsetPartitionHandler(PartitionHandler partitionHandler) voidsetProcessorTransactional(Boolean processorTransactional) Flag to signal that the processor is transactional -- in that case, it should be called for every item in every transaction.voidsetPropagation(org.springframework.transaction.annotation.Propagation propagation) voidsetRetryableExceptionClasses(Map<Class<? extends Throwable>, Boolean> retryableExceptionClasses) Public setter for exception classes that retries the item when raised.voidsetRetryContextCache(org.springframework.retry.policy.RetryContextCache retryContextCache) voidsetRetryLimit(int retryLimit) Public setter for the retry limit.voidsetRetryListeners(org.springframework.retry.RetryListener... retryListeners) Public setter for theRetryListenerinstances.voidsetRetryPolicy(org.springframework.retry.RetryPolicy retryPolicy) A retry policy to apply when exceptions occur.voidsetSkipLimit(int skipLimit) Public setter for a limit that determines skip policy.voidsetSkippableExceptionClasses(Map<Class<? extends Throwable>, Boolean> exceptionClasses) Public setter for exception classes that, when raised, do not crash the job but result in transaction rollback.voidsetSkipPolicy(SkipPolicy skipPolicy) Public setter for a skip policy.voidsetStartLimit(int startLimit) The number of times that the step should be allowed to start.voidvoidsetStepExecutionAggregator(StepExecutionAggregator stepExecutionAggregator) voidsetStreams(ItemStream[] streams) The streams to inject into theStep.voidsetTaskExecutor(org.springframework.core.task.TaskExecutor taskExecutor) Public setter for theTaskExecutor.voidsetTasklet(Tasklet tasklet) A preconfiguredTaskletto use.voidsetThrottleLimit(Integer throttleLimit) Public setter for the throttle limit.voidsetTransactionManager(org.springframework.transaction.PlatformTransactionManager transactionManager) voidsetTransactionTimeout(int transactionTimeout) protected voidValidates that all components required to build a fault tolerant step are set.
-
Constructor Details
-
StepParserStepFactoryBean
public StepParserStepFactoryBean()
-
-
Method Details
-
getObject
Create aStepfrom the configuration provided. -
requiresTransactionManager
public boolean requiresTransactionManager()Currently, all step implementations other thanTaskletStepare instances ofAbstractStepand do not require a transaction manager. -
enhanceCommonStep
Enhances a step with attributes from the providedStepBuilderHelper.- Parameters:
builder-StepBuilderHelperrepresenting 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 theAbstractTaskletStepBuilderusing the values that were established for the factory bean.- Parameters:
builder- TheAbstractTaskletStepBuilderto 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:
trueif the step is configured with any components that require fault tolerance.
-
getObjectType
- Specified by:
getObjectTypein interfaceorg.springframework.beans.factory.FactoryBean<I>
-
isSingleton
public boolean isSingleton()- Specified by:
isSingletonin interfaceorg.springframework.beans.factory.FactoryBean<I>
-
setBeanName
Set the bean name property, which will become the name of theStepwhen it is created.- Specified by:
setBeanNamein 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-JobRepositoryinstance 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 preconfiguredTaskletto use.- Parameters:
tasklet-Taskletinstance to be used by step.
-
getTasklet
-
getTransactionManager
public org.springframework.transaction.PlatformTransactionManager getTransactionManager()- Returns:
- An instance of
PlatformTransactionManagerused 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 ofStepListenercan 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- TheBackOffPolicyto 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- theRetryPolicyto set
-
setRetryContextCache
public void setRetryContextCache(org.springframework.retry.policy.RetryContextCache retryContextCache) - Parameters:
retryContextCache- TheRetryContextCacheto 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- theKeyGeneratorto 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 theCompletionPolicythat applies to the chunk level. A transaction is committed when this policy decides to complete. Defaults to aSimpleCompletionPolicywith chunk size equal to thecommitIntervalproperty.- Parameters:
chunkCompletionPolicy- ThechunkCompletionPolicyto set.
-
setCommitInterval
public void setCommitInterval(int commitInterval) Set the commit interval. Set either this or thechunkCompletionPolicybut 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- TheSkipPolicyto 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
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- TheItemReaderto set.
-
setItemProcessor
- Parameters:
itemProcessor- TheItemProcessorto set.
-
setItemWriter
- Parameters:
itemWriter- TheItemWriterto set.
-
setRetryListeners
public void setRetryListeners(org.springframework.retry.RetryListener... retryListeners) Public setter for theRetryListenerinstances.- Parameters:
retryListeners- TheRetryListenerinstances 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 ofItemStreamcan 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-trueif step has <chunk/> element.
-
hasChunkElement
protected boolean hasChunkElement()- Returns:
trueif the defined step has a <chunk/> element.
-
hasTasklet
protected boolean hasTasklet()- Returns:
trueif the defined step has a <tasklet/> element.
-
hasPartitionElement
protected boolean hasPartitionElement()- Returns:
trueif the defined step has a <partition/> element.
-