首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Spring MVC 中 Controller 為會話作用域時 Service 的實例化行為

     編輯:程式設計綜合問答

結論

Service 仍為單例。Spring 容器啟動時創建 Service Bean (默認 singleton),注入到 Controller 時只是引用同一實例。

驗證

@Controller
@Scope("session")
public class MyController {
    @Autowired
    private MyService service; // 每個 session 的 Controller 共享同一 Service 實例
}

原理

  • Bean 定義階段確定作用域:Service 无 @Scope → singleton。
  • Controller 首次請求創建實例,注入時從容器獲取 Service (單例)。
  • 後續請求復用同一 Service。

注意

若 Service 持有非線程安全狀態 (如成員變量存儲用戶數據),會導致併發Bug。Service 應無狀態,數據通過方法參數傳遞。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved