簡體   English   中英

Spring Rest應用程序中的Java靜態/全局變量

[英]Java static/global variables in Spring Rest Application

我正在開發一個 Spring Rest Service Web 應用程序,只要在控制器中收到 HTTP 請求,我就會設置一個static String變量null 進一步在應用中,這個變量被各種類和方法多次修改,最終作為rest服務響應返回。

我擔心這個static String變量可能會被另一個並發 HTTP 請求更新,從而導致先前請求中的值不正確。

我不希望使用實例變量,因為它需要跨應用程序傳遞給多個方法(> 30)。

請提出一種聲明全局變量的方法,該變量不會被任何並發 HTTP 請求更新,並為每個 HTTP 請求提供一個單獨的副本。

你所有的驗證方法都已經接受了一個參數,對吧? 要驗證的數據。

他們也都需要能夠生成驗證消息並將它們存儲在某個地方,例如在“結果收集器”中,對嗎? 所以這也應該是一個參數。

旁注:將數據和結果收集器作為參數提供給驗證器允許您對驗證器進行單元測試

我沒有看到將結果收集器傳遞給所有驗證器的問題,就像傳遞要驗證的數據一樣。 這就是代碼應該如何編寫的開始。

切勿在 Web 應用程序中使用“全局”內存。

純粹從驗證器的角度來看,您傳入要驗證的數據,但希望將結果寫入靜態收集器? 糟糕的設計,就在那里。 驗證器不應該負責弄清楚如何找到結果收集器。

控制器有一個單例范圍,它不應該包含數據。 如果您需要將數據存儲到應用程序,請使用包含數據字符串的 bean 的相應范圍。

如果您使用的是在其他用戶之間共享的 bean,則應保護數據免受並發修改。 您以哪種方式為用戶提供保護目前並不重要,但負擔得起的數據結構簡化了此類 bean 的實現。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM