2009-10-14 58 views
1

我一直在使用Spring一段時間,但我真的不知道如何當我要求Spring在多個不同的服務類中注入DAO時,它總是相同的類,或者如果我要求原型是每隔一個新類時間等等會話範圍等等。任何人都可以分享一些關於這種特別是「單身人士」的燈光,因爲它是最常用的,也可以用於可能包含狀態但是是單身服務的服務層類別的線程安全問題Spring如何保持單件,原型......在引擎蓋下?

回答

3

我並不是想成爲一名「LMGTFY」笨蛋,但我懷疑有人會比Spring documentation on bean scopes更好地解釋它。當它的加載

  1. 辛格爾頓豆(這是默認的範圍)均在正常預實例化(除非另有配置)通過bean工廠:

    作爲一個快速的翻版,不過,以解決您的具體問題。可以把它看作是豆的地圖。當你要求一個bean(直接或作爲其他bean的依賴或自動裝配時),它是從該映射獲得的。

  2. 原型bean沒有預先實例化;每次你要求一個原型bean時,Spring都會創建並初始化一個新實例。
  3. 就多線程而言,Dean J(誰刪除了他的答案)是正確的 - 你的服務不應該保持一個狀態,或者如果他們這樣做,應該適當地同步。
+0

LMAO !!你知道我以前從來沒有見過這個,我已經多次閱讀這個文檔,但只是尋找我想要的...應該保持原來的模式,但後來SO想到了大聲笑...... SO替代原則! – 2009-10-14 18:13:43

+0

@ ChssPly76:其實這已經告訴我我所知道的,我更像是尋找內部的東西,是否有'Threadlocal'的使用,'Map'與bean ID在哪裏/如何維護等 – 2009-10-17 21:53:25

+0

沒有ThreadLocal,也沒有同步,一切都包含在BeanFactory實例中。對於Spring MVC,您可以選擇讓Spring在會話中同步控制器的方法,但這就是它。您可以查看(http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/beans/factory/support/AbstractBeanFactory.html)AbstractBeanFactory源代碼(及其子類,如DefaultListableBeanFactory )如果你對內部工作方式感興趣。 – ChssPly76 2009-10-17 22:05:27

相關問題