Session(會話範圍)
- 儲存使用者專屬資料:登入狀態、購物車、權限、偏好設定。
- 生命週期:使用者首次請求建立,瀏覽器關閉或
session.invalidate()、超時銷毀。
- 每位使用者擁有獨立 Session 實例。
Application(應用範圍)
- 儲存全域共享、唯讀或少寫資料:系統配置、字典表緩存、線程池、計數器。
- 生命週期:伺服器啟動建立,關閉銷毀,全應用單一實例。
- 需注意線程安全(使用
ConcurrentHashMap、AtomicInteger 或同步鎖)。
為何 Session 較常用?
大多數業務邏輯圍繞「使用者」展開,需隔離資料;Application 適用場景較窄(全域配置、緩存),且需自行處理並發,故使用頻率較低。