spring的singleton和prototype
這兩天面試有人問了問題,singleton和prototype的區別?就這問題參考網上資料,總結一下,以備日后用。
- singleton---單例模式
每個bean定義只生成一個對象實例,每次getBean請求獲得的都是此實例
- 單例模式分為餓漢模式和懶漢模式
餓漢模式 | spring singleton的缺省是餓漢模式:啟動容器時(即實例化容器時),為所有spring配置文件中定義的bean都生成一個實例 |
懶漢模式 | 在第一個請求時才生成一個實例,以后的請求都調用這個實例 spring singleton設置為懶漢模式: <beans default-lazy-init="true"> |
- 另一種和singleton對應的scope值---prototype多實例模式
- singleton和prototype的比較
xml配置文件: <bean id="dvdTypeDAO" class="com.machome.hibernate.impl.DvdTypeDAOImpl" /> |
測試代碼: |
運行: true com.machome.hibernate.impl.DvdTypeDAOImpl@15b0333 com.machome.hibernate.impl.DvdTypeDAOImpl@15b0333 說明前后兩次getBean()獲得的是同一實例,說明spring缺省是單例 |
prototype
<bean id="dvdTypeDAO" class="com.machome.hibernate.impl.DvdTypeDAOImpl" scope="prototype" /> |
執行同樣的測試代碼 |
運行: false com.machome.hibernate.impl.DvdTypeDAOImpl@afae4a com.machome.hibernate.impl.DvdTypeDAOImpl@1db9852 說明scope="prototype"后,每次getBean()的都是不同的新實例 |
Gavin
posted on 2011-08-10 17:31 GavinMiao 閱讀(2038) 評論(0) 編輯 收藏 所屬分類: spring