Class AbstractStep

java.lang.Object
org.springframework.batch.core.step.AbstractStep
All Implemented Interfaces:
Step, org.springframework.beans.factory.Aware, org.springframework.beans.factory.BeanNameAware, org.springframework.beans.factory.InitializingBean
Direct Known Subclasses:
DelegateStep, FlowStep, JobStep, PartitionStep, TaskletStep

public abstract class AbstractStep extends Object implements Step, org.springframework.beans.factory.InitializingBean, org.springframework.beans.factory.BeanNameAware
A Step implementation that provides common behavior to subclasses, including registering and calling listeners.
Author:
Dave Syer, Ben Hale, Robert Kasanicky, Michael Minella, Chris Schaefer, Mahmoud Ben Hassine
  • Constructor Details

    • AbstractStep

      public AbstractStep()
      Default constructor.
    • AbstractStep

      public AbstractStep(String name)
      Convenient constructor for setting only the name property.
      Parameters:
      name - Name of the step
  • Method Details

    • afterPropertiesSet

      public void afterPropertiesSet() throws Exception
      Specified by:
      afterPropertiesSet in interface org.springframework.beans.factory.InitializingBean
      Throws:
      Exception
    • getName

      public String getName()
      Specified by:
      getName in interface Step
      Returns:
      the name of this step.
    • setName

      public void setName(String name)
      Set the name property. Always overrides the default value if this object is a Spring bean.
      Parameters:
      name - the name of the Step.
      See Also:
    • setBeanName

      public void setBeanName(String name)
      Set the name property if it is not already set. Because of the order of the callbacks in a Spring container the name property will be set first if it is present. Care is needed with bean definition inheritance - if a parent bean has a name, then its children need an explicit name as well, otherwise they will not be unique.
      Specified by:
      setBeanName in interface org.springframework.beans.factory.BeanNameAware
      See Also:
      • BeanNameAware.setBeanName(java.lang.String)
    • getStartLimit

      public int getStartLimit()
      Specified by:
      getStartLimit in interface Step
      Returns:
      the number of times a step can be (re)started for the same job instance. Defaults to Integer.MAX_VALUE
    • setStartLimit

      public void setStartLimit(int startLimit)
      Public setter for the startLimit.
      Parameters:
      startLimit - the startLimit to set
    • isAllowStartIfComplete

      public boolean isAllowStartIfComplete()
      Specified by:
      isAllowStartIfComplete in interface Step
      Returns:
      true if a step that is already marked as complete can be started again. Defaults to false.
    • setAllowStartIfComplete

      public void setAllowStartIfComplete(boolean allowStartIfComplete)
      Public setter for flag that determines whether the step should start again if it is already complete. Defaults to false.
      Parameters:
      allowStartIfComplete - the value of the flag to set
    • doExecute

      protected abstract void doExecute(StepExecution stepExecution) throws Exception
      Extension point for subclasses to execute business logic. Subclasses should set the ExitStatus on the StepExecution before returning.
      Parameters:
      stepExecution - the current step context
      Throws:
      Exception - checked exception thrown by implementation
    • open

      protected void open(ExecutionContext ctx) throws Exception
      Extension point for subclasses to provide callbacks to their collaborators at the beginning of a step, to open or acquire resources. Does nothing by default.
      Parameters:
      ctx - the ExecutionContext to use
      Throws:
      Exception - checked exception thrown by implementation
    • close

      protected void close(ExecutionContext ctx) throws Exception
      Extension point for subclasses to provide callbacks to their collaborators at the end of a step (right at the end of the finally block), to close or release resources. Does nothing by default.
      Parameters:
      ctx - the ExecutionContext to use
      Throws:
      Exception - checked exception thrown by implementation
    • execute

      public final void execute(StepExecution stepExecution) throws JobInterruptedException, UnexpectedJobExecutionException
      Template method for step execution logic - calls abstract methods for resource initialization ( open(ExecutionContext)), execution logic (doExecute(StepExecution)) and resource closing ( close(ExecutionContext)).
      Specified by:
      execute in interface Step
      Parameters:
      stepExecution - an entity representing the step to be executed.
      Throws:
      JobInterruptedException - if the step is interrupted externally.
      UnexpectedJobExecutionException
    • doExecutionRelease

      protected void doExecutionRelease()
      Releases the most recent StepExecution
    • doExecutionRegistration

      protected void doExecutionRegistration(StepExecution stepExecution)
      Registers the StepExecution for property resolution via StepScope
      Parameters:
      stepExecution - StepExecution to use when hydrating the StepScoped beans
    • registerStepExecutionListener

      public void registerStepExecutionListener(StepExecutionListener listener)
      Register a step listener for callbacks at the appropriate stages in a step execution.
      Parameters:
      listener - a StepExecutionListener
    • setStepExecutionListeners

      public void setStepExecutionListeners(StepExecutionListener[] listeners)
      Register each of the objects as listeners.
      Parameters:
      listeners - an array of listener objects of known types.
    • getCompositeListener

      protected StepExecutionListener getCompositeListener()
      Returns:
      composite listener that delegates to all registered listeners.
    • setJobRepository

      public void setJobRepository(JobRepository jobRepository)
      Public setter for JobRepository.
      Parameters:
      jobRepository - is a mandatory dependence (no default).
    • getJobRepository

      protected JobRepository getJobRepository()
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • setObservationConvention

      public void setObservationConvention(BatchStepObservationConvention observationConvention)
    • setObservationRegistry

      public void setObservationRegistry(io.micrometer.observation.ObservationRegistry observationRegistry)
    • setMeterRegistry

      public void setMeterRegistry(io.micrometer.core.instrument.MeterRegistry meterRegistry)