當前位置:編程學習大全網 - 源碼下載 - Spring 框架中 Setter 註入 和 構造器註入 方式的區別 與優劣

Spring 框架中 Setter 註入 和 構造器註入 方式的區別 與優劣

設值註入的優勢

1. 對於習慣了傳統JavaBean開發的程序員而言,通過setter方法設定依賴關系顯得更加直

觀,更加自然。

2. 如果依賴關系(或繼承關系)較為復雜,那麽Type3模式的構造函數也會相當龐大(我們需

要在構造函數中設定所有依賴關系),此時Type2模式往往更為簡潔。

3. 對於某些第三方類庫而言,可能要求我們的組件必須提供壹個默認的構造函數(如Struts

中的Action),此時Type3類型的依賴註入機制就體現出其局限性,難以完成我們期望的功

能。

構造子註入的優勢:

1. “在構造期即創建壹個完整、合法的對象”,對於這條Java設計原則,Type3無疑是最好的

響應者。

2. 避免了繁瑣的setter方法的編寫,所有依賴關系均在構造函數中設定,依賴關系集中呈現,

更加易讀。

3. 由於沒有setter方法,依賴關系在構造時由容器壹次性設定,因此組件在被創建之後即處於

相對“不變”的穩定狀態,無需擔心上層代碼在調用過程中執行setter方法對組件依賴關系

產生破壞,特別是對於Singleton模式的組件而言,這可能對整個系統產生重大的影響。

4. 同樣,由於關聯關系僅在構造函數中表達,只有組件創建者需要關心組件內部的依賴關系。

對調用者而言,組件中的依賴關系處於黑盒之中。對上層屏蔽不必要的信息,也為系統的

層次清晰性提供了保證。

5. 通過構造子註入,意味著我們可以在構造函數中決定依賴關系的註入順序,對於壹個大量

依賴外部服務的組件而言,依賴關系的獲得順序可能非常重要,比如某個依賴關系註入的

先決條件是組件的DataSource及相關資源已經被設定。

  • 上一篇:接收源代碼
  • 下一篇:SQL Server數據庫如何正確加密?
  • copyright 2024編程學習大全網