Spring 單例模式

2021-08-28 07:28:51 字數 1088 閱讀 9574

jvm的工作原理:

a:類載入器:通過類載入器將編譯好的位元組碼檔案載入到jvm中。

b:位元組碼校驗器:校驗載入過來的位元組碼的合法,如是否損壞或者被病毒篡改過等。如果校驗失敗則不會繼續執行了。

c:直譯器:解釋執行位元組碼生成目標平台的機器碼執行。

靜態成員在什麼時候就存在了?在位元組碼檔案被成功載入到jvm中後就存在了。

例項成員什麼時候存在的?在例項化物件後才存在。

靜態方法為什麼不能訪問例項化成員?因為靜態方法存在時例項成員可能根本不存在,讓乙個存在的東西去訪問乙個根本不存在的東西,邏輯上不通。

設計模式:解決固定問題的固定辦法。

單:乙個

例:例項(物件)

單例:乙個物件

單例設計模式:對外只提供乙個物件的設計模式。

單例設計模式的分類:根據物件的例項化時機

餓漢式:

設計步驟:

public class person 

//3.通過公有的靜態方法返回第乙個宣告並例項化好的物件。

public static person getinstance()

}

懶漢式:

設計步驟:

public class pig 

/*** 3.通過公有的靜態方法返回第一步宣告的物件,

* 但是注意:需要判斷物件是否例項化過,如果沒有例項化則馬上例項化,如果已經例項化則直接返回。

* * 執行緒同步的實現方式有兩種:

* a:同步函式

* b:同步**塊

* * 區別:

* a:同步函式使用的鎖是:

* a:例項方法:this

* b:靜態方法:當前類名.class

* * b:同步**塊使用的鎖是:

* 任意物件

* * 如果想既安全有要求效率高,可以使用雙重判斷來解決。

* @return

*/public static pig getinstance()

}}

return instance;

}}

spring 單例模式

單例模式,在spring 中其實是scope 作用範圍 引數的預設設定值 每個bean定義只生成乙個物件例項,每次getbean請求獲得的都是此例項 餓漢模式 spring singleton的預設是餓漢模式 啟動容器時 即例項化容器時 為所有spring配置檔案中定義的bean都生成乙個例項 懶漢...

Spring 單例模式

spring物件預設是單例的。可以通過scope屬性更改為多例。通過配置檔案 bean id test class test.test scope prototype bean 通過註解 controller scope prototype public class testcontroller 理...

Spring 單例模式和多例模式

singleton 單例 只有乙個共享的例項存在,所有對這個bean的請求都會返回這個唯一的例項。prototype 多例 對這個bean的每次請求都會建立乙個新的bean例項,類似於new。spring bean 預設是單例模式。單例測試 測試類user user1 user context.ge...