2
當我收到我的API請求時,我想要執行一系列步驟,每個步驟都是檢查或充實。每一步都可能成功或失敗。在成功之後,下一步應該進行。失敗時,應執行結束步驟,並完成流程。爲此,我考慮過Spring State Machine,因爲它似乎符合法案。Spring State Machine - 我應該創建多少個?
我已經對文檔的閱讀起來與它發揮各地,但有些事情逃避我:
如果有一個請求和狀態機之間的1對1的關係,也就是說,對於每個請求,我創建一個新的狀態機實例?或者,我是否應該通過重新設置機器的下一個請求來重複使用已完成的狀態機?
清理完成狀態機怎麼樣?似乎沒有辦法銷燬和清理狀態機實例。如果我爲每個請求創建一個,我已經有效地引入了內存泄漏,除非框架以某種方式處理資源。
我對Spring的實現並不熟悉,但查看文檔後發現,每臺機器都有其狀態的內部表示(與狀態存儲在機器外部相比; ala'State currentState = machine.start ()')。這會妨礙跨多個請求使用單臺機器,因爲第二個請求可能在第一個請求完成之前發生 - 可能會導致一些奇怪的行爲。 –
就是這樣說的;狀態機是否必要?如果你只是檢查前提條件是否得到滿足,會簡單的'if(!firstSuccess)返回失敗;如果(!secondSuccess)返回失敗;'不夠? –
我認爲有幾種設計可以支持這種流程。其中之一就是SSM。所以爲了嘗試它,我選擇了它。 我同意你的要求和狀態機實例之間必須有一對一的關係。但是這留下了資源控制的問題。實例是否應該被回收?還是應該丟棄?如果是這樣,怎麼樣? –