2009-12-15 61 views
1

我最近開始學習Spring框架,並且在應用程序上下文(ApplicationContext)應該如何使用方面有點不清楚 - 在獨立應用程序和Web應用程序中。我明白ApplicationContext,一旦用spring配置xml實例化,就是「spring容器」,並且是一個單例。正確的ApplicationContext用法?

但是:

  1. 在起點 - 主要方法 - 一個應用程序,應該使用ApplicationContext.getBean(「類名」),然後依靠DI所有其他註冊豆還是有使用方法只有 DI?
  2. 除了主要方法之外還有其他地方嗎我可以/應該使用ApplicationContext.getBean(「className」)嗎?
  3. 如果以及何時應該在Web應用程序中使用ApplicationContext.getBean(「className」)?
  4. 如果您認爲有關於DI有關網絡應用的DI必須知道的信息,儘管我可能沒有具體詢問它,請分享。

回答

3
  1. 你至少需要從外部調用一個上下文,這是不能避免的。使用webapps,這個部分對你來說是隱藏的,它感覺就像所有的東西都在使用DI,儘管Spring的servlet粘合代碼在幕後做了一些不愉快的事情。

  2. 可以,是的;應該,不。自己撥打getBean的原因很少。

  3. 最明顯的場景是當你有一個需要訪問上下文的servlet過濾器時。 FIlters不是由Spring管理的,所以不能由Spring將它們連接到它們。

  4. 這太含糊了。閱讀參考文檔:)

+0

感謝專門針對我的每一個問題。至於我的最後一個問題,它的目的是爲了避免任何大的陷阱和誤解,我作爲Spring的新手(網絡應用程序中的DI)可能容易並應該意識到。目前,我一直在閱讀Spring in Action和ref docs :-) – Ari 2009-12-18 16:41:46

1

我一般只推薦一個每個應用ApplicationContext.getBean()的使用,以及依靠彈簧CONFIGS做休息。

這個異常適用於單元測試,我想加載一個特定的子集的子集(所以我會顯式加載一個通常會從我的bean層次結構頂部加載的bean)。