spring下的bean單例模式與設計模式(GOF)中的單例模式區別

通常的單例是指JVM中只有一個實例,Spring的單例是spirng 容器中只有一個實例。spring

 

當一個bean的做用域設置爲singleton, 那麼Spring IOC容器中只會存在一個共享的bean實例,而且全部對bean的請求,只要id與該bean定義相匹配,則只會返回bean的同一實例。換言之,當把一個bean定義設置爲singleton做用域時,Spring IOC容器只會建立該bean定義的惟一實例。這個單一實例會被存儲到單例緩存(singleton cache)中,而且全部針對該bean的後續請求和引用都將返回被緩存的對象實例,這裏要注意的是singleton做用域和GOF設計模式中的單例是徹底不一樣的,單例設計模式表示一個ClassLoader中只有一個class存在,而這裏的singleton則表示一個容器對應一個bean,也就是說當一個bean被標識爲singleton時候,spring的IOC容器中只會存在一個該bean。設計模式

而設計模式中,咱們是對構造方法私有化,進行單例模式,用戶從而不能new多個實例。緩存

相關文章
相關標籤/搜索