原文地址:http://blog.sina.com.cn/s/blog_6151984a0100kfij.htmlhtml
餓漢模式 |
spring singleton的缺省是餓漢模式:啓動容器時(即實例化容器時),爲全部spring配置文件中定義的bean都生成一個實例 |
懶漢模式 |
在第一個請求時才生成一個實例,之後的請求都調用這個實例 spring singleton設置爲懶漢模式: <beans default-lazy-init="true"> |
xml配置文件: <bean id="dvdTypeDAO" class="com.machome.hibernate.impl.DvdTypeDAOImpl" /> |
測試代碼: ctx = new ClassPathXmlApplicationContext("spring-hibernate-mysql.xml"); DvdTypeDAO tDao1 = (DvdTypeDAO)ctx.getBean("dvdTypeDAO"); DvdTypeDAO tDao2 = (DvdTypeDAO)ctx.getBean("dvdTypeDAO"); |
運行: true com.machome.hibernate.impl.DvdTypeDAOImpl@15b0333 com.machome.hibernate.impl.DvdTypeDAOImpl@15b0333 說明先後兩次getBean()得到的是同一實例,說明spring缺省是單例 |
<bean id="dvdTypeDAO" class="com.machome.hibernate.impl.DvdTypeDAOImpl" scope="prototype" /> |
執行一樣的測試代碼 |
運行:falsecom.machome.hibernate.impl.DvdTypeDAOImpl@afae4acom.machome.hibernate.impl.DvdTypeDAOImpl@1db9852說明scope="prototype"後,每次getBean()的都是不一樣的新實例 |