<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    少年阿賓

    那些青春的歲月

      BlogJava :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
      500 Posts :: 0 Stories :: 135 Comments :: 0 Trackbacks
    Spring什么時(shí)候?qū)嵗痓ean,首先要分2種情況 
      第一:如果你使用BeanFactory作為Spring Bean的工廠類,則所有的bean都是在第一次使用該Bean的時(shí)候?qū)嵗?nbsp;
      第二:如果你使用ApplicationContext作為Spring Bean的工廠類,則又分為以下幾種情況: 
           (1):如果bean的scope是singleton的,并且lazy-init為false(默認(rèn)是false,所以可以不用設(shè)置),則ApplicationContext啟動(dòng)的時(shí)候就實(shí)例化該Bean,并且將實(shí)例化的Bean放在一個(gè)map結(jié)構(gòu)的緩存中,下次再使用該Bean的時(shí)候,直接從這個(gè)緩存中取 
           (2):如果bean的scope是singleton的,并且lazy-init為true,則該Bean的實(shí)例化是在第一次使用該Bean的時(shí)候進(jìn)行實(shí)例化 
           (3):如果bean的scope是prototype的,則該Bean的實(shí)例化是在第一次使用該Bean的時(shí)候進(jìn)行實(shí)例化 


    1、lazy init 在getBean時(shí)實(shí)例化 
    2、非lazy的單例bean 容器初始化時(shí)實(shí)例化 
    3、prototype等 getBean時(shí)實(shí)例化




    spring三種實(shí)例化bean的方式

    在spring中有三中實(shí)例化bean的方式:

    一、使用構(gòu)造器實(shí)例化;

    二、使用靜態(tài)工廠方法實(shí)例化;

    三、使用實(shí)例化工廠方法實(shí)例化。

     

    每種實(shí)例化所采用的配置是不一樣的:

    一、使用構(gòu)造器實(shí)例化;

    這種實(shí)例化的方式可能在我們平時(shí)的開(kāi)發(fā)中用到的是最多的,因?yàn)樵趚ml文件中配置簡(jiǎn)單并且也不需要額外的工廠類來(lái)實(shí)現(xiàn)。

    <!--applicationContext.xml配置:-->

    <bean id="personService" class="cn.mytest.service.impl.PersonServiceBean"></bean>
     id是對(duì)象的名稱,class是要實(shí)例化的類,然后再通過(guò)正常的方式進(jìn)調(diào)用實(shí)例化的類即可,比如:
    public void instanceSpring(){
                    //加載spring配置文件
    ApplicationContext ac = new ClassPathXmlApplicationContext(
    new String[]{
    "/conf/applicationContext.xml"
    });
    //調(diào)用getBean方法取得被實(shí)例化的對(duì)象。
    PersonServiceBean psb = (PersonServiceBean) ac.getBean("personService");
    psb.save();
    }

    采用這種實(shí)例化方式要注意的是:要實(shí)例化的類中如果有構(gòu)造器的話,一定要有一個(gè)無(wú)參的構(gòu)造器。

     

    二、使用靜態(tài)工廠方法實(shí)例化;

    根據(jù)這個(gè)中實(shí)例化方法的名稱就可以知道要想通過(guò)這種方式進(jìn)行實(shí)例化就要具備兩個(gè)條件:(一)、要有工廠類及其工廠方法;(二)、工廠方法是靜態(tài)的。OK,知道這兩點(diǎn)就好辦了,首先創(chuàng)建工程類及其靜態(tài)方法:

    package cn.mytest.service.impl;
    /**
    *創(chuàng)建工廠類
    *
    */
    public class PersonServiceFactory {
        //創(chuàng)建靜態(tài)方法
    public static PersonServiceBean createPersonServiceBean(){
             //返回實(shí)例化的類的對(duì)象
    return new PersonServiceBean();
    }
    }
    然后再去配置spring配置文件,配置的方法和上面有點(diǎn)不同,這里也是關(guān)鍵所在
    <!--applicationContext.xml配置:-->
    <bean id="personService1" class="cn.mytest.service.impl.PersonServiceFactory" factory-method="createPersonServiceBean"></bean>

     id是實(shí)例化的對(duì)象的名稱,class是工廠類,也就實(shí)現(xiàn)實(shí)例化類的靜態(tài)方法所屬的類,factory-method是實(shí)現(xiàn)實(shí)例化類的靜態(tài)方法。

    然后按照正常的調(diào)用方法去調(diào)用即可:

    public void instanceSpring(){
                    //加載spring配置文件
    ApplicationContext ac = new ClassPathXmlApplicationContext(
    new String[]{
    "/conf/applicationContext.xml"
    });
    //調(diào)用getBean方法取得被實(shí)例化的對(duì)象。
    PersonServiceBean psb = (PersonServiceBean) ac.getBean("personService1");
    psb.save();
    }

    三、使用實(shí)例化工廠方法實(shí)例化。

    這個(gè)方法和上面的方法不同之處在與使用該實(shí)例化方式工廠方法不需要是靜態(tài)的,但是在spring的配置文件中需要配置更多的內(nèi)容,,首先創(chuàng)建工廠類及工廠方法:

    package cn.mytest.service.impl;
    /**
    *創(chuàng)建工廠類
    *
    */
    public class PersonServiceFactory {
        //創(chuàng)建靜態(tài)方法
    public PersonServiceBean createPersonServiceBean1(){
             //返回實(shí)例化的類的對(duì)象
    return new PersonServiceBean();
    }
    }
    然后再去配置spring配置文件,配置的方法和上面有點(diǎn)不同,這里也是關(guān)鍵所在
    <!--applicationContext.xml配置:-->
    <bean id="personServiceFactory" class="cn.mytest.service.impl.PersonServiceFactory"></bean>
    <bean id="personService2" factory-bean="personServiceFactory" factory-method="createPersonServiceBean1"></bean>

     這里需要配置兩個(gè)bean,第一個(gè)bean使用的構(gòu)造器方法實(shí)例化工廠類,第二個(gè)bean中的id是實(shí)例化對(duì)象的名稱,factory-bean對(duì)應(yīng)的被實(shí)例化的工廠類的對(duì)象名稱,也就是第一個(gè)bean的id,factory-method是非靜態(tài)工廠方法。

     

     

    然后按照正常的調(diào)用方法去調(diào)用即可:

    public void instanceSpring(){
                    //加載spring配置文件
    ApplicationContext ac = new ClassPathXmlApplicationContext(
    new String[]{
    "/conf/applicationContext.xml"
    });
    //調(diào)用getBean方法取得被實(shí)例化的對(duì)象。
    PersonServiceBean psb = (PersonServiceBean) ac.getBean("personService2");
    psb.save();
    }
    posted on 2015-04-20 15:01 abin 閱讀(474) 評(píng)論(0)  編輯  收藏 所屬分類: spring
    主站蜘蛛池模板: 亚洲毛片免费观看| 亚洲一区二区三区无码影院| 永久黄色免费网站| 在线观看特色大片免费网站| 中国一级特黄高清免费的大片中国一级黄色片 | 亚洲色欲色欲www在线播放| 亚洲爆乳精品无码一区二区三区| 精品国产亚洲一区二区在线观看| 亚洲色偷拍区另类无码专区| 久久亚洲2019中文字幕| 亚洲精品无码Av人在线观看国产| 亚洲精品制服丝袜四区| 亚洲毛片在线观看| 亚洲国产日韩女人aaaaaa毛片在线 | 久久这里只精品99re免费| 97无码人妻福利免费公开在线视频| 免费一级不卡毛片| 亚洲人成免费网站| 天天摸天天操免费播放小视频| 波多野结衣久久高清免费| 免费v片在线观看| 亚洲另类激情综合偷自拍图| 亚洲伊人tv综合网色| 亚洲免费视频观看| 无码亚洲成a人在线观看| 春意影院午夜爽爽爽免费| 成人精品一区二区三区不卡免费看| 久久大香香蕉国产免费网站| 成年黄网站色大免费全看| 在线观看亚洲免费视频| 亚洲无码视频在线| 亚洲三级电影网站| 亚洲永久网址在线观看| 一级女性全黄久久生活片免费| 国内精品免费久久影院| 免费专区丝袜脚调教视频| 国产无遮挡色视频免费视频| 亚洲日韩中文字幕日韩在线| 久久亚洲私人国产精品vA| 亚洲av无码一区二区三区天堂| 黄色视频在线免费观看|