亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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

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

斯蒂芬大帝 2019-10-08 11:13:47
眾所周知,默認情況下,Spring容器中將bean作為單例,如果我們有一個基于Spring框架的Web應用程序,那么在這種情況下,我們真的需要實現Singleton設計模式來保存全局數據,而不僅僅是通過spring創建bean 。如果我無法解釋我真正要問的問題,請忍受。
查看完整描述

4 回答

?
瀟湘沐

TA貢獻1816條經驗 獲得超6個贊

Spring中的單例豆和單例模式有很大不同。Singleton模式表示,每個類加載器將只創建一個特定類的一個實例。


Spring單例的范圍被描述為“每個容器每個bean”。對于每個Spring IoC容器,單個對象實例的bean定義范圍就是這樣。Spring的默認范圍是Singleton。


即使默認范圍是單例,您也可以通過指定<bean ../>element 的scope屬性來更改bean的范圍。


<bean id=".." class=".." scope="prototype" />


查看完整回答
反對 回復 2019-10-08
?
POPMUISE

TA貢獻1765條經驗 獲得超5個贊

Spring中的Singleton范圍表示Spring上下文中的單個實例

。Spring容器僅一次又一次返回同一實例,以供后續調用以獲取Bean。



而且,無論bean的類是否被編碼為singleton,spring都不會打擾;實際上,如果該類被編碼為其構造函數為private的singleton,Spring則使用BeanUtils.instantiateClass(此處為Javadoc )將構造函數設置為可訪問并調用它。


或者,我們可以像這樣在bean定義中使用factory-method屬性


    <bean id="exampleBean" class="example.Singleton"  factory-method="getInstance"/>


查看完整回答
反對 回復 2019-10-08
?
繁華開滿天機

TA貢獻1816條經驗 獲得超4個贊

讓我們以最簡單的示例為例:您有一個應用程序,而僅使用默認的類加載器。您有一個類,無論出于何種原因,您都決定該類在應用程序中不應有多個實例。(考慮一個由幾個人共同處理應用程序的場景)。

如果您不使用Spring框架,則Singleton模式可確保您的應用程序中一個類的實例不超過一個。那是因為構造函數是私有的,所以無法通過執行“ new”來實例化類的實例。獲取該類實例的唯一方法是調用該類的某些靜態方法(通常稱為“ getInstance”),該方法始終返回相同的實例。

說您在應用程序中使用Spring框架,僅意味著除了獲取類實例的常規方法(返回類實例的新方法或靜態方法)之外,您還可以要求Spring幫助您該類的實例,Spring會確保即使您未使用Singleton模式編寫該類,只要您向其要求該類的實例,它將始終返回相同的實例。換句話說,即使該類具有公共構造函數,如果您始終向Spring請求該類的實例,則Spring在應用程序生命周期內只會調用該構造函數一次。

通常,如果使用Spring,則應僅使用Spring創建實例,并且可以為該類提供一個公共構造函數。但是,如果您的構造函數不是私有的,那么您實際上并不會通過繞過Spring來阻止任何人直接創建該類的新實例。

如果您確實想要該類的單個實例,即使您在應用程序中使用Spring并將Spring中的類定義為單例,那么確保該類的唯一方法就是也使用Singleton模式實現該類。這樣可以確保只有一個實例,無論人們使用Spring獲取實例還是繞過Spring。


查看完整回答
反對 回復 2019-10-08
?
慕田峪7331174

TA貢獻1828條經驗 獲得超13個贊

在Spring中,Singleton作用域意味著該bean將僅由Spring實例化一次。與原型范圍(每次都有新實例)相反,請求范圍(每個請求一次),會話范圍(每個HTTP會話一次)。

從技術上講,單例范圍與單例設計模式有關。您無需將bean實施為單例即可將它們放入單例范圍。


查看完整回答
反對 回復 2019-10-08
  • 4 回答
  • 0 關注
  • 708 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號