API에 대한 요청을 받았을 때 일련의 단계를 수행하고 싶습니다. 각 단계는 수표 또는 농축 물입니다. 각 단계는 성공하거나 실패 할 수 있습니다. 성공하면 다음 단계를 수행해야합니다. 실패하면 종료 단계가 실행되고 흐름이 완료됩니다. 그 때문에이 법안에 맞는 것으로 보이는 스프링 스테이트 머신을 고려했습니다.스프링 상태 머신 - 얼마나 많이 만들어야합니까?
나는 문서를 읽어와 함께 놀았지만, 몇 가지 저를 회피 한 :
가 요청하고 국가 기계 사이에 1 대 1 관계가되어야 함을 의미 모든 요청에 대해 새로운 State Machine 인스턴스를 만듭니다. 또는 다음 요 청을 위해 기계를 재설정하여 완성 된 상태 머신을 어떻게 든 재사용해야합니까?
완성 된 State Machine을 정리하는 방법은 무엇입니까? State Machine 인스턴스를 제거하고 정리하는 방법은없는 것 같습니다. 요청 당 1 개를 만들면 프레임 워크가 어떻게 든 리소스를 처리하지 않으면 효과적으로 메모리 누수가 발생했습니다.
스프링의 구현에는 익숙하지 않지만 설명서를 보면 각 시스템의 상태가 내부적으로 표시된다는 것을 알 수 있습니다 (상태가 컴퓨터 외부에 저장되는 것과 비교하면 ala State currentState = machine.start()'). 이것은 첫 번째가 완료되기 전에 두 번째 요청이 발생할 수 있기 때문에 여러 요청에서 단일 시스템을 사용하는 것을 배제합니다. 그걸로 –
; 상태 기계가 필요합니까? 전제 조건을 충족하는지 만 확인하는 경우 간단한'if (! firstSuccess) return 실패; if (! secondSuccess) return failure;'충분하지 않습니까? –
이 흐름을 지원하는 몇 가지 디자인이 있다고 생각합니다.그 중 하나가 SSM입니다. 그래서 그것을 시도하기 위해, 나는 그것을 선택했다. 요청과 상태 시스템 인스턴스간에 1 대 1이 있어야한다는 것에 동의합니다. 그러나 그것은 자원 통제에 대한 의문을 남긴다. 인스턴스를 재활용해야합니까? 아니면 폐기해야합니까? 그렇다면 어떻게? –