<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
    主站蜘蛛池模板: 456亚洲人成在线播放网站| 一个人看的在线免费视频| 毛片A级毛片免费播放| 成人精品综合免费视频| 亚洲AV无码精品色午夜在线观看| h在线观看视频免费网站| 在线播放亚洲精品| 亚洲av伊人久久综合密臀性色| 美女视频黄a视频全免费| 亚洲精品视频免费观看| 亚洲性无码av在线| 亚洲国产综合精品一区在线播放| 蜜桃AV无码免费看永久| 五月婷婷免费视频| 亚洲一区二区三区高清不卡| 中文字幕亚洲一区二区va在线| 久久国产免费福利永久| 精品熟女少妇aⅴ免费久久| 欧洲 亚洲 国产图片综合| 久久夜色精品国产亚洲| 国产精品公开免费视频| 99爱视频99爱在线观看免费| 免费播放美女一级毛片| 久久狠狠爱亚洲综合影院| 亚洲国产精品va在线播放| 日本一道高清不卡免费| 免费成人福利视频| 日本视频免费高清一本18| 极品美女一级毛片免费| 中文字幕亚洲码在线| 激情内射亚洲一区二区三区| 久久久久亚洲爆乳少妇无| 国产精品va无码免费麻豆| 久久久高清免费视频| 日韩精品免费视频| 人人爽人人爽人人片av免费| 九九精品国产亚洲AV日韩| 亚洲日韩国产精品乱-久| 久久久亚洲精品无码| 久久精品国产亚洲7777| 四虎影在线永久免费观看|