即興的靈感

          思維是一種藝術; 藝術需要靈感。

          博客好友

          最新評論

          Spring筆記之六(IoC Singleton)

          ???Spring中BeanFactory支持兩個對象模型

          <!--[if !supportLists]--> <!--[endif]--> 單態:模型提供了具有特定名稱的對象的共享實例,可以在查詢時對其進行檢索。Singleton 是默認的也是最常用的對象模型。對于無狀態?? 服務對象很理想。

          <!--[if !supportLists]--> 原型:模型確保每次檢索都會創建單獨的對象。在每個用戶都需要自己的對象時,原型模型最適合。

          實例:

          ?1??<??beans??>
          ?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每次都將創建一個新的實例返回。

          ???

          ???? 1?public?class ?NonSingleton?{
          ?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

          評論

          # re: Spring筆記之六(IoC Singleton)[未登錄] 2008-08-10 15:34 mjgforever

          singleton為true,程序正常。將singleton設置為false,程序為什么報錯?
          <bean id="nonSingleton" class="java.lang.String" singleton="false">
          <constructor-arg>
          <value>Value</value>
          </constructor-arg>
          </bean>


          Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'nonSingleton' defined in file [E:\Java\workspace\Spring_Singleton\build\beans.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [java.lang.String]: Illegal arguments for constructor; nested exception is java.lang.IllegalArgumentException: argument type mismatch
          Caused by: org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [java.lang.String]: Illegal arguments for constructor; nested exception is java.lang.IllegalArgumentException: argument type mismatch
          Caused by: java.lang.IllegalArgumentException: argument type mismatch
          at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
          at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
          at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
          at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
          at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:85)
          at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:87)
          at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:186)
          at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:795)
          at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:713)
          at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:386)
          at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:268)
          at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:160)
          at spring.singleton.NonSingleton.main(NonSingleton.java:15)
            回復  更多評論   

          主站蜘蛛池模板: 天祝| 嫩江县| 闻喜县| 岳普湖县| 台北市| 平度市| 津南区| 祁门县| 比如县| 镇原县| 平谷区| 建平县| 合江县| 南丹县| 龙里县| 凭祥市| 南召县| 旌德县| 塔河县| 阿图什市| 元阳县| 双峰县| 灌南县| 托克逊县| 上高县| 和平区| 长乐市| 甘洛县| 福建省| 梅州市| 四平市| 赤水市| 宿迁市| 顺昌县| 香格里拉县| 新田县| 西安市| 山丹县| 唐山市| 海盐县| 正阳县|