<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(僅包含一個默認的構造函數,在屬性后面定義相對應的setter和getter方法),而是任何你想讓它管理的類,比如連接池、甚至BeanFactory本身。

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

    1、標準Bean:

    使用默認的構造函數和基于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、構造函數模式

    自定義的構造函數,基于構造函數參數的依賴注射

    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、靜態工廠方法模式

    靜態工廠方法必須是static的,基于方法參數的依賴注射。

    Bean類代碼:

    java代碼:?

    public class ExampleBean {
    ? ? private BeanOne beanOne;
    ? ? private BeanTwo beanTwo;
    ? ? privateint count;
    ? ? //構造函數私有
    ? ? private ExampleBean(BeanOne beanOne, BeanTwo beanTwo, int count){
    ? ? ? ? this.beanOne = beanOne;
    ? ? ? ? this.beanTwo = beanTwo;
    ? ? ? ? this.count = count;
    ? ? }
    ? ? //對外提供靜態的方法
    ? ? 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、實例工廠方法模式

    調用一個已存在的bean(這個bean應該是工廠類型)的工廠方法來創建新的bean,基于方法參數的依賴注射

    該模式沒有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其它參數的配置

    一個常用Bean的配置參數和解釋

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

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

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

    java代碼:?

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


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


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



    3、list、set、map、以及 props 元素用來定義和設置Java對應類型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、內部Bean和ref元素引用容器管理的其他bean

    一個內部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>



    注:元素引用可以是下面三種權限:
    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引用回復將這個帖子加入我的Blog

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

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

    1、標準Bean:

    使用默認的構造函數和基于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、構造函數模式

    自定義的構造函數,基于構造函數參數的依賴注射

    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、靜態工廠方法模式

    靜態工廠方法必須是static的,基于方法參數的依賴注射。

    Bean類代碼:

    java代碼:?

    publicclass ExampleBean {
    ? ? private BeanOne beanOne;
    ? ? private BeanTwo beanTwo;
    ? ? privateint count;
    ? ? //構造函數私有
    ? ? private ExampleBean(BeanOne beanOne, BeanTwo beanTwo, int count){
    ? ? ? ? this.beanOne = beanOne;
    ? ? ? ? this.beanTwo = beanTwo;
    ? ? ? ? this.count = count;
    ? ? }
    ? ? //對外提供靜態的方法
    ? ? 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、實例工廠方法模式

    調用一個已存在的bean(這個bean應該是工廠類型)的工廠方法來創建新的bean,基于方法參數的依賴注射

    該模式沒有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其它參數的配置

    一個常用Bean的配置參數和解釋

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

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

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

    java代碼:?

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


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


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



    3、list、set、map、以及 props 元素用來定義和設置Java對應類型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、內部Bean和ref元素引用容器管理的其他bean

    一個內部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>



    注:元素引用可以是下面三種權限:
    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 阿成 閱讀(297) 評論(0)  編輯  收藏 所屬分類: Spring
    主站蜘蛛池模板: 亚洲欧美国产国产一区二区三区 | 免费中文字幕在线| 亚洲免费视频一区二区三区| 亚洲精品美女久久777777| 一级女人18毛片免费| 全黄A免费一级毛片| 久久久久亚洲AV无码麻豆| 午夜视频在线观看免费完整版| 和老外3p爽粗大免费视频| 亚洲国产精品乱码在线观看97| 国产男女猛烈无遮档免费视频网站 | 最近免费中文字幕中文高清| 亚洲国产精品日韩在线| 亚洲va中文字幕无码| 亚洲高清视频免费| h视频在线观看免费| 亚洲人成在线免费观看| 久久99亚洲综合精品首页| 最近中文字幕mv免费高清电影| 91免费国产视频| 亚洲av永久无码一区二区三区| 久久夜色精品国产嚕嚕亚洲av| 日本黄色免费观看| 91九色视频无限观看免费| aa级女人大片喷水视频免费| 亚洲爆乳无码精品AAA片蜜桃| 亚洲国产综合91精品麻豆| 亚洲AⅤ永久无码精品AA| 日韩精品福利片午夜免费观着| 中国好声音第二季免费播放| 久久精品国产亚洲AV天海翼| 亚洲欧洲日韩在线电影| 亚洲无线观看国产精品| 国产一精品一aⅴ一免费| 国产成人免费高清激情视频| 性xxxxx大片免费视频| 又大又硬又粗又黄的视频免费看| 亚洲美国产亚洲AV| 亚洲狠狠成人综合网| 亚洲成a人片在线观看播放| 亚洲av日韩av无码黑人|