StateMachineConfigurerAdapter에 정의 된 사용자 정의 액션에서 예외를 throw하면 상태 머신에 대한 모든 후속 호출이 null currentState를 가져올 때 NPE를 throw합니다.작업에서 예외를 throw 할 때 스프링 상태 머신이 NullPointerException을 throw합니다.
PersistStateMachineHandler handler;
handler.handleEventWithState(
MessageBuilder
.withPayload(event)
.setHeader("key", data)
.build()
,
previousState
)
스택 트레이스는 다음과 같습니다 : 상태 머신에
내 전화는
java.lang.NullPointerException
at org.springframework.statemachine.support.AbstractStateMachine.acceptEvent(AbstractStateMachine.java:591)
at org.springframework.statemachine.support.AbstractStateMachine.sendEvent(AbstractStateMachine.java:202)
at org.springframework.statemachine.recipes.persist.PersistStateMachineHandler.handleEventWithState(PersistStateMachineHandler.java:81)
그리고 그 이유의 currentState가 null오고있다으로 this.currentState.getIds()가 NPE를 던지고 있다는 점이다. 이전의 모든 사람이 그것을 처리하는 것처럼 보인다
는 AbstractStateMachine
protected synchronized boolean acceptEvent(Message<E> message)
마지막 줄의 currentState! = null의 조건을 처리하지 않는 몇 가지 코드 문제가 있습니다. 명시 적으로 currentState를 전달하여이 예외를 건너 뛸 수 있습니다. 일반적으로 필요하지는 않습니다. 그러나 currentState를 부여한 후에도 persistStateChangeListener의 onPersist() 메서드를 호출하지 않더라도