欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺談Spring單例Bean與單例模式的區(qū)別

 更新時間:2017年12月26日 17:00:51   作者:蟻方陣  
這篇文章主要介紹了淺談Spring單例Bean與單例模式的區(qū)別,具有一定借鑒價值,需要的朋友可以參考下

Spring單例Bean與單例模式的區(qū)別在于它們關聯(lián)的環(huán)境不一樣,單例模式是指在一個JVM進程中僅有一個實例,而Spring單例是指一個Spring Bean容器(ApplicationContext)中僅有一個實例。

首先看單例模式,在一個JVM進程中(理論上,一個運行的JAVA程序就必定有自己一個獨立的JVM)僅有一個實例,于是無論在程序中的何處獲取實例,始終都返回同一個對象,以Java內置的Runtime為例(現(xiàn)在枚舉是單例模式的最佳實踐),無論何時何處獲取,下面的判斷始終為真:

// 基于懶漢模式實現(xiàn)
// 在一個JVM實例中始終只有一個實例
Runtime.getRuntime() == Runtime.getRuntime()

與此相比,Spring的單例Bean是與其容器(ApplicationContext)密切相關的,所以在一個JVM進程中,如果有多個Spring容器,即使是單例bean,也一定會創(chuàng)建多個實例,代碼示例如下:

// 第一個Spring Bean容器
ApplicationContext context_1 = new FileSystemXmlApplicationContext("classpath:/ApplicationContext.xml");
Person yiifaa_1 = context_1.getBean("yiifaa", Person.class);
// 第二個Spring Bean容器
ApplicationContext context_2 = new FileSystemXmlApplicationContext("classpath:/ApplicationContext.xml");
Person yiifaa_2 = context_2.getBean("yiifaa", Person.class);
// 這里絕對不會相等,因為創(chuàng)建了多個實例
System.out.println(yiifaa_1 == yiifaa_2);

以下是Spring的配置文件:

<!-- 即使聲明了為單例,只要有多個容器,也一定會創(chuàng)建多個實例 -->
<bean id="yiifaa" class="com.stixu.anno.Person" scope="singleton">
  <constructor-arg name="username">
    <value>yiifaa</value>
  </constructor-arg>
</bean>

總結

Spring的單例bean與Spring bean管理容器密切相關,每個容器都會創(chuàng)建自己獨有的實例,所以與GOF設計模式中的單例模式相差極大,但在實際應用中,如果將對象的生命周期完全交給Spring管理(不在其他地方通過new、反射等方式創(chuàng)建),其實也能達到單例模式的效果。

以上就是本文關于淺談Spring單例Bean與單例模式的區(qū)別的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!

相關文章

  • Spring MVC獲取參數和自定義參數類型轉換器及編碼過濾器

    Spring MVC獲取參數和自定義參數類型轉換器及編碼過濾器

    這篇文章主要為大家詳細介紹了Spring MVC獲取參數和自定義參數類型轉換器及編碼過濾器,文中通過代碼示例介紹的非常詳細,具有一定的參考價值,需要的朋友可以參考下
    2023-06-06
  • 詳解IntelliJ IDEA創(chuàng)建spark項目的兩種方式

    詳解IntelliJ IDEA創(chuàng)建spark項目的兩種方式

    這篇文章主要介紹了詳解IntelliJ IDEA創(chuàng)建spark項目的兩種方式,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • java實現(xiàn)頁面置換算法

    java實現(xiàn)頁面置換算法

    這篇文章主要為大家詳細介紹了java實現(xiàn)頁面置換算法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • springboot實現(xiàn)將自定義日志格式存儲到mongodb中

    springboot實現(xiàn)將自定義日志格式存儲到mongodb中

    這篇文章主要介紹了springboot實現(xiàn)將自定義日志格式存儲到mongodb中的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • 解決DataInputStream?read不等于-1,socket文件傳輸只能傳輸一個文件無法傳輸多個問題

    解決DataInputStream?read不等于-1,socket文件傳輸只能傳輸一個文件無法傳輸多個問題

    這篇文章主要介紹了解決DataInputStream?read不等于-1,socket文件傳輸只能傳輸一個文件無法傳輸多個問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • java實現(xiàn)九宮格拼圖游戲

    java實現(xiàn)九宮格拼圖游戲

    這篇文章主要為大家詳細介紹了java實現(xiàn)九宮格拼圖游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • 淺談一下數據庫連接池Druid德魯伊

    淺談一下數據庫連接池Druid德魯伊

    數據庫連接池就是一個容器持有多個數據庫連接,當程序需要操作數據庫的時候直接從池中取出連接,使用完之后再還回去,和線程池一個道理,需要的朋友可以參考下
    2023-05-05
  • Spring中緩存注解@Cache的使用詳解

    Spring中緩存注解@Cache的使用詳解

    這篇文章主要介紹了Spring中緩存注解@Cache的使用詳解,使用注解對數據進行緩存功能的框架,只需要簡單地加一個注解,就能實現(xiàn)緩存功能,大大簡化我們在業(yè)務中操作緩存的代碼,需要的朋友可以參考下
    2023-07-07
  • 一文帶你探究Spring中Bean的線程安全性問題

    一文帶你探究Spring中Bean的線程安全性問題

    很多人都想spring中的bean是線程安全的嗎?本文將帶你探究Spring中Bean的線程安全性問題,感興趣的同學可以參考閱讀下
    2023-05-05
  • 你應該知道的21個Java核心技術

    你應該知道的21個Java核心技術

    Java的21個核心技術點,你知道嗎?這篇文章主要為大家詳細介紹了Java核心技術,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08

最新評論