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

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

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

    posts - 120,  comments - 19,  trackbacks - 0
    Spring使用BeanFactory模式來管理Bean,但Spring中提到的Bean不是標準的意義上的JavaBean(僅包含一個默認的構(gòu)造函數(shù),在屬性后面定義相對應(yīng)的setter和getter方法),而是任何你想讓它管理的類,比如連接池、甚至BeanFactory本身。

    一)Bean的設(shè)計常用下面幾種模式

    1、標準Bean:

    使用默認的構(gòu)造函數(shù)和基于setter、getter方法的依賴注射

    Bean類代碼:

    java代碼:?

    public class ExampleBean {
    ? ? private BeanOne beanOne;
    ? ? private BeanTwo beanTwo;
    ? ? privateint count;
    ? ?
    ? ? publicvoid setBeanOne(BeanOne beanOne){
    ? ? ? ? this.beanOne = beanOne;
    ? ? }
    ? ?
    ? ? publicvoid setBeanTwo(BeanTwo beanTwo){
    ? ? ? ? this.beanTwo = beanTwo;
    ? ? }
    ? ?
    ? ? publicvoid setCount(int count){
    ? ? ? ? this.count = count;
    ? ? }? ?
    }


    在配置文件中定義:

    java代碼:?

    <bean id="exampleBean" class="examples.ExampleBean">
    ? ? <property name="beanOne"><ref bean="bean1"/></property>
    ? ? <property name="beanTwo"><ref bean="bean2"/></property>
    ? ? <property name="count"><value>1</value></property>
    </bean>

    <bean id="bean1" class="examples.BeanOne"/>
    <bean id="bean2" class="examples.BeanTwo"/>


    2、構(gòu)造函數(shù)模式

    自定義的構(gòu)造函數(shù),基于構(gòu)造函數(shù)參數(shù)的依賴注射

    Bean類代碼:

    java代碼:?

    public class ExampleBean {
    ? ? private BeanOne beanOne;
    ? ? private BeanTwo beanTwo;
    ? ? privateint count;
    ? ?
    ? ? public ExampleBean(BeanOne beanOne, BeanTwo beanTwo, int count){
    ? ? ? ? this.beanOne = beanOne;
    ? ? ? ? this.beanTwo = beanTwo;
    ? ? ? ? this.count = count;
    ? ? }
    }


    在配置文件中定義:
    java代碼:?


    <bean id="exampleBean" class="examples.ExampleBean">
    ? ? <constructor-arg><ref bean="bean1"/></constructor-arg>
    ? ? <constructor-arg><ref bean="bean2"/></constructor-arg>
    ? ? <constructor-arg><value>1</value></constructor-arg>
    </bean>

    <bean id="bean1" class="examples.BeanOne"/>
    <bean id="bean2" class="examples.BeanTwo"/>


    3、靜態(tài)工廠方法模式

    靜態(tài)工廠方法必須是static的,基于方法參數(shù)的依賴注射。

    Bean類代碼:

    java代碼:?

    public class ExampleBean {
    ? ? private BeanOne beanOne;
    ? ? private BeanTwo beanTwo;
    ? ? privateint count;
    ? ? //構(gòu)造函數(shù)私有
    ? ? private ExampleBean(BeanOne beanOne, BeanTwo beanTwo, int count){
    ? ? ? ? this.beanOne = beanOne;
    ? ? ? ? this.beanTwo = beanTwo;
    ? ? ? ? this.count = count;
    ? ? }
    ? ? //對外提供靜態(tài)的方法
    ? ? publicstatic ExampleBean createInstance(BeanOne beanOne, BeanTwo beanTwo, int count){
    ? ? ? ? ExampleBean eb = new ExampleBean(beanOne,beanTwo,count);
    ? ? ? ? return eb;
    ? ? }
    }


    在配置文件中定義:

    java代碼:?

    <bean id="exampleBean" class="examples.ExampleBean" factory-method="createInstance">
    ? ? <constructor-arg><ref bean="bean1"/></constructor-arg>
    ? ? <constructor-arg><ref bean="bean2"/></constructor-arg>
    ? ? <constructor-arg><value>1</value></constructor-arg>
    </bean>

    <bean id="bean1" class="examples.BeanOne"/>
    <bean id="bean2" class="examples.BeanTwo"/>



    3、實例工廠方法模式

    調(diào)用一個已存在的bean(這個bean應(yīng)該是工廠類型)的工廠方法來創(chuàng)建新的bean,基于方法參數(shù)的依賴注射

    該模式?jīng)]有Bean類;

    在配置文件中定義:

    java代碼:?

    <bean id="exampleBean"
    ? ? ? factory-bean="myFactoryBean"
    ? ? ? factory-method="createInstance"/>

    <bean id="myFactoryBean" class="examples.ExampleBean" factory-method="createInstance">
    ? ? <constructor-arg><ref bean="bean1"/></constructor-arg>
    ? ? <constructor-arg><ref bean="bean2"/></constructor-arg>
    ? ? <constructor-arg><value>1</value></constructor-arg>
    </bean>

    <bean id="bean1" class="examples.BeanOne"/>
    <bean id="bean2" class="examples.BeanTwo"/>


    二)Bean其它參數(shù)的配置

    一個常用Bean的配置參數(shù)和解釋

    <bean id="" ——標志符,用它引用唯一的Bean
    class="" ——該Bean對應(yīng)的類,前面說到實例工廠方法模式創(chuàng)建的Bean沒有類
    singleton="" ——值為true或false,標識該Bean是否為單實例模式?如果為false則對這個bean
    的每次請求都會創(chuàng)建一個新的bean實例
    init-method="" ——向應(yīng)用層返回引用前執(zhí)行的初始化方法
    destroy-method="" ——該Bean的銷毀方法
    depends-on=""> ——在Bean加載前,首先加載的指定資源
    ....
    </bean>

    三)property(或constructor-arg元素)的配置

    1、用字符串形式指定常見類型的屬性或參數(shù)的value值,JavaBean的PropertyEditor負責類型轉(zhuǎn)化如:

    java代碼:?

    <property name="driverClassName">
    ? ? <value>com.mysql.jdbc.Driver</value>
    </property>
    <property name="url">
    ? ? <value>jdbc:mysql://localhost:3306/mydb</value>
    </property>


    2、注意null和""(空串)的區(qū)別,如:
    java代碼:?


    <property name="email"><value></value></property>
    <property name="email"><null/></property>



    3、list、set、map、以及 props 元素用來定義和設(shè)置Java對應(yīng)類型List、Set、Map、和 Properties ,如:

    java代碼:?


    <property name="school">
    ? ?<props>
    ? ? ? <prop key="school01">The xi'an technology university</prop>
    ? ? ? <prop key="school02">The BeiJing university</prop>
    ? ?</props>
    </property>

    <property name="someList">
    ? ?<list>
    ? ? ? <value>a list element followed by a reference</value>
    ? ? ? <ref bean="myDataSource"/>
    ? ?</list>
    </property>

    <property name="someMap">
    ? ?<map>
    ? ? ? <entry key="001">
    ? ? ? ? ?<value>just some string</value>
    ? ? ? </entry>
    ? ? ? <entry key="yup a ref">
    ? ? ? ? ?<ref bean="myDataSource"/>
    ? ? ? </entry>
    ? ?</map>
    </property>
    ? ? ? ?
    <property name="someSet">
    ? ? ? <set>
    ? ? ? ? ?<value>just some string</value>
    ? ? ? ? ?<ref bean="myDataSource"/>
    ? ? ? </set>
    </property>


    4、內(nèi)部Bean和ref元素引用容器管理的其他bean

    一個內(nèi)部Bean的例子:
    java代碼:?


    <bean id="dep" class="com.bean.Conpany">
    ? ? <property name="manager">
    ? ? ? ? <bean class="com.bean.Person">
    ? ? ? ? ? ? <property name="name"><value>Tony</value></property>
    ? ? ? ? ? ? <property name="age"><value>51</value></property>
    ? ? ? ? </bean>
    ? ? </property>
    </bean>


    ref元素引用的例子:
    java代碼:?


    <bean id="person_manger" class="com.bean.Person">
    ? ? <property name="name"><value>Tony</value></property>
    ? ? <property name="age"><value>51</value></property>
    </bean>

    <bean id="dep" class="com.bean.Conpany">
    ? ? <property name="manager">
    ? ? ? ? <idref bean="person_manager"/>
    ? ? </property>
    </bean>



    注:元素引用可以是下面三種權(quán)限:
    1)<idref bean="person_manager"/>
    引用的Bean可以在同一個BeanFactory/ApplicationContext(無論是否在同一個XML文件中)中,也可以在父BeanFactory/ApplicationContext中
    2)<idref local="person_manager"/>
    引用的bean在同一個XML文件中
    3)<idref parent="person_manager"/>
    引用的bean必須在當前BeanFactory(ApplicationContext)的父BeanFactory(ApplicationContext)中.
    有新文章時間: 2006-3-23 12:58:26?? ?標題: Spring學習筆記(二)Bean引用回復(fù)將這個帖子加入我的Blog

    Spring使用BeanFactory模式來管理Bean,但Spring中提到的Bean不是標準的意義上的JavaBean(僅包含一個默認的構(gòu)造函數(shù),在屬性后面定義相對應(yīng)的setter和getter方法),而是任何你想讓它管理的類,比如連接池、甚至BeanFactory本身。

    一)Bean的設(shè)計常用下面幾種模式

    1、標準Bean:

    使用默認的構(gòu)造函數(shù)和基于setter、getter方法的依賴注射

    Bean類代碼:

    java代碼:?

    publicclass ExampleBean {
    ? ? private BeanOne beanOne;
    ? ? private BeanTwo beanTwo;
    ? ? privateint count;
    ? ?
    ? ? publicvoid setBeanOne(BeanOne beanOne){
    ? ? ? ? this.beanOne = beanOne;
    ? ? }
    ? ?
    ? ? publicvoid setBeanTwo(BeanTwo beanTwo){
    ? ? ? ? this.beanTwo = beanTwo;
    ? ? }
    ? ?
    ? ? publicvoid setCount(int count){
    ? ? ? ? this.count = count;
    ? ? }? ?
    }


    在配置文件中定義:

    java代碼:?

    <bean id="exampleBean" class="examples.ExampleBean">
    ? ? <property name="beanOne"><ref bean="bean1"/></property>
    ? ? <property name="beanTwo"><ref bean="bean2"/></property>
    ? ? <property name="count"><value>1</value></property>
    </bean>

    <bean id="bean1" class="examples.BeanOne"/>
    <bean id="bean2" class="examples.BeanTwo"/>


    2、構(gòu)造函數(shù)模式

    自定義的構(gòu)造函數(shù),基于構(gòu)造函數(shù)參數(shù)的依賴注射

    Bean類代碼:

    java代碼:?

    publicclass ExampleBean {
    ? ? private BeanOne beanOne;
    ? ? private BeanTwo beanTwo;
    ? ? privateint count;
    ? ?
    ? ? public ExampleBean(BeanOne beanOne, BeanTwo beanTwo, int count){
    ? ? ? ? this.beanOne = beanOne;
    ? ? ? ? this.beanTwo = beanTwo;
    ? ? ? ? this.count = count;
    ? ? }
    }


    在配置文件中定義:
    java代碼:?


    <bean id="exampleBean" class="examples.ExampleBean">
    ? ? <constructor-arg><ref bean="bean1"/></constructor-arg>
    ? ? <constructor-arg><ref bean="bean2"/></constructor-arg>
    ? ? <constructor-arg><value>1</value></constructor-arg>
    </bean>

    <bean id="bean1" class="examples.BeanOne"/>
    <bean id="bean2" class="examples.BeanTwo"/>


    3、靜態(tài)工廠方法模式

    靜態(tài)工廠方法必須是static的,基于方法參數(shù)的依賴注射。

    Bean類代碼:

    java代碼:?

    publicclass ExampleBean {
    ? ? private BeanOne beanOne;
    ? ? private BeanTwo beanTwo;
    ? ? privateint count;
    ? ? //構(gòu)造函數(shù)私有
    ? ? private ExampleBean(BeanOne beanOne, BeanTwo beanTwo, int count){
    ? ? ? ? this.beanOne = beanOne;
    ? ? ? ? this.beanTwo = beanTwo;
    ? ? ? ? this.count = count;
    ? ? }
    ? ? //對外提供靜態(tài)的方法
    ? ? publicstatic ExampleBean createInstance(BeanOne beanOne, BeanTwo beanTwo, int count){
    ? ? ? ? ExampleBean eb = new ExampleBean(beanOne,beanTwo,count);
    ? ? ? ? return eb;
    ? ? }
    }


    在配置文件中定義:

    java代碼:?

    <bean id="exampleBean" class="examples.ExampleBean" factory-method="createInstance">
    ? ? <constructor-arg><ref bean="bean1"/></constructor-arg>
    ? ? <constructor-arg><ref bean="bean2"/></constructor-arg>
    ? ? <constructor-arg><value>1</value></constructor-arg>
    </bean>

    <bean id="bean1" class="examples.BeanOne"/>
    <bean id="bean2" class="examples.BeanTwo"/>



    3、實例工廠方法模式

    調(diào)用一個已存在的bean(這個bean應(yīng)該是工廠類型)的工廠方法來創(chuàng)建新的bean,基于方法參數(shù)的依賴注射

    該模式?jīng)]有Bean類;

    在配置文件中定義:

    java代碼:?

    <bean id="exampleBean"
    ? ? ? factory-bean="myFactoryBean"
    ? ? ? factory-method="createInstance"/>

    <bean id="myFactoryBean" class="examples.ExampleBean" factory-method="createInstance">
    ? ? <constructor-arg><ref bean="bean1"/></constructor-arg>
    ? ? <constructor-arg><ref bean="bean2"/></constructor-arg>
    ? ? <constructor-arg><value>1</value></constructor-arg>
    </bean>

    <bean id="bean1" class="examples.BeanOne"/>
    <bean id="bean2" class="examples.BeanTwo"/>


    二)Bean其它參數(shù)的配置

    一個常用Bean的配置參數(shù)和解釋

    <bean id="" ——標志符,用它引用唯一的Bean
    class="" ——該Bean對應(yīng)的類,前面說到實例工廠方法模式創(chuàng)建的Bean沒有類
    singleton="" ——值為true或false,標識該Bean是否為單實例模式?如果為false則對這個bean
    的每次請求都會創(chuàng)建一個新的bean實例
    init-method="" ——向應(yīng)用層返回引用前執(zhí)行的初始化方法
    destroy-method="" ——該Bean的銷毀方法
    depends-on=""> ——在Bean加載前,首先加載的指定資源
    ....
    </bean>

    三)property(或constructor-arg元素)的配置

    1、用字符串形式指定常見類型的屬性或參數(shù)的value值,JavaBean的PropertyEditor負責類型轉(zhuǎn)化如:

    java代碼:?

    <property name="driverClassName">
    ? ? <value>com.mysql.jdbc.Driver</value>
    </property>
    <property name="url">
    ? ? <value>jdbc:mysql://localhost:3306/mydb</value>
    </property>


    2、注意null和""(空串)的區(qū)別,如:
    java代碼:?


    <property name="email"><value></value></property>
    <property name="email"><null/></property>



    3、list、set、map、以及 props 元素用來定義和設(shè)置Java對應(yīng)類型List、Set、Map、和 Properties ,如:

    java代碼:?


    <property name="school">
    ? ?<props>
    ? ? ? <prop key="school01">The xi'an technology university</prop>
    ? ? ? <prop key="school02">The BeiJing university</prop>
    ? ?</props>
    </property>

    <property name="someList">
    ? ?<list>
    ? ? ? <value>a list element followed by a reference</value>
    ? ? ? <ref bean="myDataSource"/>
    ? ?</list>
    </property>

    <property name="someMap">
    ? ?<map>
    ? ? ? <entry key="001">
    ? ? ? ? ?<value>just some string</value>
    ? ? ? </entry>
    ? ? ? <entry key="yup a ref">
    ? ? ? ? ?<ref bean="myDataSource"/>
    ? ? ? </entry>
    ? ?</map>
    </property>
    ? ? ? ?
    <property name="someSet">
    ? ? ? <set>
    ? ? ? ? ?<value>just some string</value>
    ? ? ? ? ?<ref bean="myDataSource"/>
    ? ? ? </set>
    </property>


    4、內(nèi)部Bean和ref元素引用容器管理的其他bean

    一個內(nèi)部Bean的例子:
    java代碼:?


    <bean id="dep" class="com.bean.Conpany">
    ? ? <property name="manager">
    ? ? ? ? <bean class="com.bean.Person">
    ? ? ? ? ? ? <property name="name"><value>Tony</value></property>
    ? ? ? ? ? ? <property name="age"><value>51</value></property>
    ? ? ? ? </bean>
    ? ? </property>
    </bean>


    ref元素引用的例子:
    java代碼:?


    <bean id="person_manger" class="com.bean.Person">
    ? ? <property name="name"><value>Tony</value></property>
    ? ? <property name="age"><value>51</value></property>
    </bean>

    <bean id="dep" class="com.bean.Conpany">
    ? ? <property name="manager">
    ? ? ? ? <idref bean="person_manager"/>
    ? ? </property>
    </bean>



    注:元素引用可以是下面三種權(quán)限:
    1)<idref bean="person_manager"/>
    引用的Bean可以在同一個BeanFactory/ApplicationContext(無論是否在同一個XML文件中)中,也可以在父BeanFactory/ApplicationContext中
    2)<idref local="person_manager"/>
    引用的bean在同一個XML文件中
    3)<idref parent="person_manager"/>
    引用的bean必須在當前BeanFactory(ApplicationContext)的父BeanFactory(ApplicationContext)中

    引用注明出處:http://spaces.msn.com/pococoon/blog/cns!D25B6032F7AD1992!193.entry




    posted on 2006-03-23 13:42 阿成 閱讀(301) 評論(0)  編輯  收藏 所屬分類: Spring
    主站蜘蛛池模板: 亚洲美女免费视频| 亚洲精品永久www忘忧草| 国产精品成人免费视频网站京东 | 久久久久久免费视频| 国产成人精品免费大全| 狠狠久久永久免费观看| 亚洲爆乳少妇无码激情| 亚洲精品在线免费观看视频| 亚洲中文字幕无码一区| 国产又黄又爽又猛的免费视频播放 | 国产精品免费看久久久香蕉| 亚洲av无码专区亚洲av不卡| 亚洲乱码一二三四五六区| 亚洲av最新在线网址| 亚洲人AV永久一区二区三区久久| 午夜a级成人免费毛片| 国产香蕉九九久久精品免费 | 亚洲av激情无码专区在线播放| 亚洲一级特黄无码片| 天堂亚洲免费视频| 精品乱子伦一区二区三区高清免费播放| 亚洲自偷自拍另类12p| 亚洲午夜无码久久久久| 中文字幕人成人乱码亚洲电影 | 亚洲av成人片在线观看| 亚洲熟女乱色一区二区三区| 亚洲人成毛片线播放| 久久精品国产亚洲av麻豆小说| 亚洲宅男永久在线| 亚洲成人黄色网址| 亚洲精品熟女国产| 久久精品国产亚洲av麻豆蜜芽| 亚洲人成网站在线观看播放动漫 | 国产色爽免费无码视频| 中国一级毛片视频免费看| 波霸在线精品视频免费观看| 男女一边摸一边做爽的免费视频| 好猛好深好爽好硬免费视频| 两个人的视频www免费| 黄网站免费在线观看| 全部免费毛片在线播放|