簡體   English   中英

Spring Singleton與Singleton設計模式-類加載器

[英]Spring Singleton Vs Singleton Design pattern - Class Loader

Singleton Pattern將實例維護在Spring容器級別,而Singleton Design Pattern將實例維護在Class Loader級別。

還有其他區別嗎?

接下來,我仍然認為上述原因並非有效原因。 事實上,一個應用程序上下文/容器僅被加載到一個類加載器中。 因此在技術上沒有區別。 是正確的,還是我缺少了什么?

參考: Singleton設計模式與Spring容器中的Singleton bean

好吧,真正的區別不在於類加載,而在於設計原理。 單例模式有其自身的局限性。 它在全局范圍內公開對象,並且很難測試。 但是,通過像Spring或Guice這樣的DI框架進行單例操作不會遇到這些問題。

SO線程可以幫助您理解。 以及Google-singleton-detectorMisko Hevery的博客也很有趣。

從某種意義上說,使用“真實”單身人士的局限性更大,因為這樣一來,您必然只能創建該類的單個實例(在類加載器中)。

如果使用Spring單例作用域的bean,則可以創建該類的任意多個“單例”實例(只要bean類不是真正的單例)。

因此,從技術上講它們不是同一回事。

這主要是這兩個名稱的共同點。 Singleton模式可確保一個類只有一個實例,而Spring的singleton bean范圍僅指示容器在依賴項注入期間使用bean的單個實例,而bean可以是不受限制的任何類。

彈簧單例確保只要使用spring框架創建對象,就只能創建該對象的一個​​實例。 相反,實現單例模式可確保僅存在該對象的一個​​實例。

我已經看到了在彈簧配置中將對象定義為單例的代碼。 單例對象有時是使用spring DI創建的,有時是使用new運算符創建的。

因此,需要謹慎行事,以確保不進行此類濫用,並保持單一實例的單一實例。

在每個類加載器級別描述單例模式。 單例bean范圍是每個spring容器。

http://www.javabench.in/2012/04/difference-between-singleton-design.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM