2011-06-01 56 views
3

我正在研究Spring作爲一個Web框架,但是我需要一些幫助讓我的頭部圍繞DI。春季應用程序的每個方面的依賴注入?

運行時在容器中構建對象的概念就是這樣一個新概念。

我只是想知道這將如何反映在一個大的應用程序,我會有一些模塊做更高度耦合的工作,或者應該在運行時初始化每個對象嗎?

這對我來說似乎有點緊張,我的意思是說,例如我有一個CSV文件數據挖掘應用程序,每行刪除數據 - 每行數據封裝在我自己的CSVRow對象之一進行處理或其他。只要Excel文件可能上傳到服務器,就會實例化這些對象。我不知道我需要創建多少個?

我似乎有點失落,任何清晰度,概述或一些指導將不勝感激。

在此先感謝!

回答

1

您不需要將DI用於CSV行抽象。一旦你獲得了文件,當你開始解析它時,你的代碼就可以創建CSVRow事物了。你不需要連接它們。

你當然可以,如果你想。你可以抓住你的applicationContext,並按名稱獲取bean。如果CsvRow具有您希望Spring爲您管理的依賴關係,那麼您會希望這樣做。

3

廣義上講,應用程序由實現業務邏輯的類集合組成。
通常,每個對象都負責獲取它所需對象的引用(以及此對象的依賴關係)。
我認爲這是明顯的是,這將導致:
1)緊耦合類
2)代碼難以測試,因爲每個對象實例化特定類別這取決於,如果需要有一個變化時,必須修改代碼。
因此,使用依賴注入時,對象本身不會實例化依賴對象,但「外部組件」在對象創建時提供依賴關係,即將依賴關係注入對象。
因此,在你的例子中,想法是你可以有一個例子,由Spring實例化的CsvRow對象(以及它的所有依賴),並在需要時獲取對象。也可以通過只是改變你的配置

4

切換到例如CsvRow2對象(另一種實現方式),我會盡量把它簡單地說:

  • 使用依賴注入對於具有邏輯無國籍類(業務邏輯,持久邏輯,前端邏輯)
  • 使用new的值對象
1

我覺得春天,以此來打造「單身」。當我想保證應用程序中只有一個類的實例時,請使用Spring創建它。但是,它不是一個傳統的單身人士,而是一個靜態的INSTANCE字段或類似的東西,它是一個POJO,可以與你需要的任何構造函數/設置器一起使用。 Spring在運行時爲你創建實例,並確保創建只發生一次。