diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/job/flow/support/SimpleFlow.java b/spring-batch-core/src/main/java/org/springframework/batch/core/job/flow/support/SimpleFlow.java index 2101c171d..f66ce004c 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/job/flow/support/SimpleFlow.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/job/flow/support/SimpleFlow.java @@ -48,6 +48,7 @@ import org.springframework.beans.factory.InitializingBean; * @author Dave Syer * @author Michael Minella * @author Mahmoud Ben Hassine + * @author Taeik Lim * @since 2.0 */ public class SimpleFlow implements Flow, InitializingBean { @@ -124,9 +125,7 @@ public class SimpleFlow implements Flow, InitializingBean { */ @Override public void afterPropertiesSet() throws Exception { - if (startState == null) { - initializeTransitions(); - } + initializeTransitionsIfNotInitialized(); } /** @@ -134,9 +133,8 @@ public class SimpleFlow implements Flow, InitializingBean { */ @Override public FlowExecution start(FlowExecutor executor) throws FlowExecutionException { - if (startState == null) { - initializeTransitions(); - } + initializeTransitionsIfNotInitialized(); + State state = startState; String stateName = state.getName(); return resume(stateName, executor); @@ -262,6 +260,12 @@ public class SimpleFlow implements Flow, InitializingBean { return continued; } + private synchronized void initializeTransitionsIfNotInitialized() { + if (startState == null) { + initializeTransitions(); + } + } + /** * Analyse the transitions provided and generate all the information needed to execute * the flow.