Spring筆記之六(IoC Singleton)
<!--[if !supportLists]--> <!--[endif]--> 單態:模型提供了具有特定名稱的對象的共享實例,可以在查詢時對其進行檢索。Singleton 是默認的也是最常用的對象模型。對于無狀態?? 服務對象很理想。
<!--[if !supportLists]--> 原型:模型確保每次檢索都會創建單獨的對象。在每個用戶都需要自己的對象時,原型模型最適合。
實例:
?2? ??????
?3???????<!--?non-singleton?examples?-->
?4??????<bean?id="nonSingleton"?class="java.lang.String"?singleton="true">
?5??????????<constructor-arg>
?6???????????????<value>Value</value>
?7??????????</constructor-arg>
?8???????</bean>
?9? ??
10??</beans>
11?
12?singleton:指定此JavaBean是否采用單例(Singleton)模式,如果設為"true",則在BeanFactory作用范圍內,只維護此JavaBean??的一個實例,代碼通過BeanFactory???獲得此JavaBean??實例的引用。反之,如果設為"false",則通過BeanFactory獲取此Java?Bean??實例時,BeanFactory每次都將創建一個新的實例返回。
???
?2?
?3?public?static?void ?main(String[]?args)?{
?4? ?
?5?BeanFactory?factory?=?new?XmlBeanFactory(new ?FileSystemResource(
?6?????????????????????"build/beans.xml" ));
?7? ???????
?8????String?s1?=?(String)factory.getBean("nonSingleton" );
?9????String?s2?=?(String)factory.getBean("nonSingleton" );
10????System.out.println("Identity?Equal?:?"?+?(s1?== s2));
11????System.out.println("Value?Equal:??"?+ ?s1.equals(s2));
12? ???System.out.println(s1);
13? ???System.out.println(s2);
14? ?}
15?}
?? 分析結果:
?? Identity Equal?: true
Value Equal:? true
Value
Value
?? 由結果可以看出由fantory產生的bean對象只有一個。
? 注意: 在Spring中消除了由用戶自己來實現Singleton模式的應用,Spring Bean的缺省行為就是Singleton,不必再為了Singleton編碼。
?
鳳凰涅槃/浴火重生/馬不停蹄/只爭朝夕
???? 隱姓埋名/低調華麗/簡單生活/完美人生
posted on 2007-09-26 13:22 poetguo 閱讀(4487) 評論(1) 編輯 收藏 所屬分類: Spring