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

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

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

    Spring中bean的基本xml配置

    有狀態的bean ,需設置 <bean .......singleton="false"></bean>
    **********

    spring 容器內拼湊 bean 叫作裝配。裝配 bean 的時候,你是在告訴容器,需要哪些 bean ,以及容器如何使用依賴注入將它們配合在一起。
    理論上, bean 裝配可以從任何資源獲得,包括屬性文件,關系數據庫等,但 xml 是最常見的 spring 應用系統配置源。 Spring 中的幾種容器都支持使用 xml 裝配 bean ,包括:
    XmlBeanFactory

    ClassPathXmlApplicationContext

    FileSystemXmlApplicationContext

    XmlWebApplicationContext

    基本的 xml 配置包括如下幾個方面:

    1
    .添加一個 bean
    2
    .設置 bean 的屬性
    2.1
    手動設置
    2.1.1
    通過 Setter 方法
    2.1.2
    通過構造器
    2.2
    自動設置
    其中 bean 的屬性即為 bean 里的成員變量,這些成員變量值的獲得可以通過 setter 方法,例如某個屬性為 name, setter 方法為 setName(String name) ;或者通過構造器在類被實例化時初始化。 Setter 方法 ( 例如 setName 方法 ) 或者構造器的調用都可以通過在 xml 文件里進行配置,從而實現讓 spring 容器來自動進行。

    1 .添加一個 bean
    以下是一個例子:
    <bean
    id = “mybean”
    Class = “blog.spring.MyBean”
    Singleton = “false”
    init-method = “initMethod”
    destroy-method = “destroyMethod”
    autowire = “autowire type”
    />
    下面是對該標簽里各個屬性的解釋:
    Id :
    標識該 bean 的名稱,通過 factory.getBean(“id”) 來獲得實例。
    Class :
    bean 的類路徑。
    Singleton :
    默認為 true ,即單實例模式,每次 getBean(“id”) 時獲取的都是同
    一個實例,如果設置為 false ,即原型模式,則每次獲取的是新創建
    的實例。
    Init-method :
    bean 實例化后要調用的方法 (bean 里定義好的方法 )
    Destroy-method : bean
    從容器里刪除之前要調用的方法。
    Autowire :
    其屬性要通過何種方法進行屬性的自動裝配。
    對于上述的各個屬性, id class 是必要的,其他的則可以省略。例如如果設置了 autowire 的值,則表明需要自動裝配,否則是手動裝配。

    2 .通過 Setter 方法手動設置 bean 里的屬性
    Bean
    里的屬性通過 <property> 標簽來標識。有以下幾種情況:
    簡單類型屬性
    <bean id = “mybean” class = “blog.spring.MyBean”>
    <property name = “name”>
    <value>springTest</value>
    </property>
    </bean>
    引用其他 bean
    <bean id = “mybean” class = “blog.spring.MyBean” />
    <bean id = “mybean1” class = “blog.spring.MyBean1”>
    <property name = “name”>
    <ref bean = “mybean” />
    </property>
    </bean>
    也可以將 <ref> 改為
    <bean class = “..”>
    這樣叫做內部 bean ,缺點是無法在其他地方重用這個 bean 的實例。
    裝配集合
    共有以下幾種集合的裝配:
    ****
    裝配 List 和數組 ****
    <property name = ”nameList”>
    <list>
    <value>something</value>
    <ref bean = “blog.spring.MyBean” />
    <value>otherThing</value>
    </list>
    </property>
    ****
    裝配 Set****
    <property name = ”nameList”>
    <set>
    <value>something</value>
    <ref bean = “blog.spring.MyBean” />
    <value>otherThing</value>
    </set>
    </property>
    ****
    裝配 Map****
    <property name = ”nameList”>
    <map>
    <entry key = “key1”>
    <value>value1</value>
    </entry>
    <entry key = “key2”>
    <ref bean = “mybean” />
    </entry>
    </map>
    </property>
    ****
    裝配 Properties****
    <property name = ”nameList”>
    <props>
    <prop key = “prop1”>value1</prop>
    <prop key = “prop2”>value2</prop>
    </props>
    </property>
    設置 null
    要將一個屬性 null ,需要通過 <null /> 標簽,如果不設置,則屬性為默認值 ( 在實例化時 ) 而不是 null
    <property name=”name”> <null /> </property>

    3 .通過構造器手動設置 bean 里的屬性
    假設有如下一個 bean
    Public class MyBean {
    Public MyBean( String arg1, MyBean1 arg2, String arg3 )
    }
    則可以在 xml 里這樣配置該 bean
    <bean id = “mybean” class = “blog.spring.MyBean”>
    <constructor-arg index = “1”>
    <value>springTest</value>
    <constructor-arg>
    <constructor-arg index = “0”>
    <ref bean = “mybean1” />
    <constructor-arg>
    </bean>
    其中的 index 是用來標識該參數在構造函數里的位置的,并從 0 開始。

    4 .讓 spring 完成自動裝配
    例如:
    <bean
    id = “mybean”
    class = “blog.spring.MyBean”
    autowire = “autowire type”
    />
    下面是幾種 autowire type 的說明:
    ● byname :
    試圖在容器中尋找和需要自動裝配的屬性名相同的 bean id ,如果沒有找到相應的 bean ,則這個屬性未被裝配上。
    ● byType :
    試圖在容器中尋找一個與需要自動裝配的屬性類型相同的 bean id ,如果沒有找到,則該屬性未被裝配上。
    ● constructor :
    試圖在容器中尋找與需要自動裝配的 bean 的構造函數參數一致的一個或多個 bean ,如果沒找到則拋出異常。
    ● autodetect :
    首先嘗試使用 constructor 來自動裝配,然后再使用 byType 方式。
    從上面可以看出,如果某個 bean 不手動設置 autowire 屬性,則默認為手動裝配。如果需要將所有 bean 都設置為自動裝配時,可以通過在 <beans> 標簽中設置 default-autowire 屬性。 <beans> 標簽是整個 xml 文檔的根,在它下面就是一個個的 <bean>
    其中 default-autowire 的值也有 byName byType constructor autodetect 四種。
    例如配置如下:
    <beans default-autowire = “byName”>
    ...
    </beans>

    自動裝配可能帶來不確定性問題。例如使用 byType 時可能同時發現兩個相同的類型,則不知道該采用哪一個。所以可能混合采用自動和手動裝配。例如,對某個 bean 設置為自動裝配,而對其某個屬性則手動明確的設置其值,例如:
    <bean id = “mybean” class = “blog.spring.MyBean”
    Autowire = “byType”
    >
    <property name = “name”>
    <ref bean = “myBean1”>
    </property>
    </bean>
    通過這樣的配置,對 mybean 里的 name 屬性進行手動裝配,而對除 name 外的其他屬性就進行自動裝配。

    好貼:http://bbs.bccn.net/thread-83040-1-1.html

    posted on 2009-04-12 23:05 luofeng225 閱讀(924) 評論(0)  編輯  收藏 所屬分類: Spring

    <2009年4月>
    2930311234
    567891011
    12131415161718
    19202122232425
    262728293012
    3456789

    導航

    統計

    公告

    我曾經聽到這么一個故事: 一個年輕的程序員問一個老程序員(一個比較牛逼的公司的CTO) 年輕程序員: 你為什么這么牛X., 就好像沒有你不會的。老程序員: 積累的。年輕程序員: 怎么才能積累到您的程度呢。我每天都在積累。但是似乎都沒有感覺到進步。老程序員: 我從20歲開始做到了一件事情,直到今天,而且盡可能地保證不間斷。年輕程序員: 到底是什么? 老程序員: 我每天保證自己有2個小時在學習新的東西。

    常用鏈接

    留言簿(3)

    隨筆分類

    隨筆檔案

    文章分類

    相冊

    收藏夾

    Java Website

    java技術博客

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲第一区精品观看| 免费观看美女裸体网站| 亚洲老妈激情一区二区三区| 小说专区亚洲春色校园| 热99re久久精品精品免费| 国产成人精品日本亚洲18图| 四虎永久在线精品免费观看视频| 亚洲精品高清国产麻豆专区| 99xxoo视频在线永久免费观看| 亚洲视频在线观看地址| 国产成人无码免费看视频软件 | 一个人免费观看www视频在线| 亚洲白色白色在线播放| 久久99九九国产免费看小说| 亚洲自国产拍揄拍| 国外成人免费高清激情视频| 亚洲av无一区二区三区| 波多野结衣中文一区二区免费| 特a级免费高清黄色片 | 狼群影院在线观看免费观看直播| 亚洲熟妇av一区二区三区下载| 91精品视频免费| 亚洲国产高清国产拍精品| 国产精品二区三区免费播放心| 一级女性全黄久久生活片免费 | 亚洲无线码在线一区观看| a级午夜毛片免费一区二区| 亚洲一卡2卡三卡4卡有限公司| 亚洲一区在线免费观看| 99亚洲乱人伦aⅴ精品| 中文字幕亚洲综合久久菠萝蜜 | 亚洲中文字幕成人在线| 久久这里只精品99re免费| 亚洲mv国产精品mv日本mv| 免费大香伊蕉在人线国产| 久久久国产精品福利免费| 亚洲人成图片网站| 91麻豆精品国产自产在线观看亚洲 | 日本黄色免费观看| 久久免费观看国产精品| 亚洲GV天堂GV无码男同|