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

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

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

    [摘錄](méi)Learn Spring in spring(二)

    摘錄地址:http://www.codechina.net/resource/html/2005-04/10/16124.html
    Learn Spring in spring(二)
    二、spring管理對(duì)象的簡(jiǎn)單例子

    Bromon原創(chuàng) 請(qǐng)尊重版權(quán)

      任何需要交給spring管理的對(duì)象,都必須在配置文件中注冊(cè),這個(gè)過(guò)程被稱(chēng)為wiring,下面做一個(gè)最簡(jiǎn)單的Hello?world演示,我們將要注冊(cè)的類(lèi)如下:

    1. /*
    2. ?*?創(chuàng)建日期?2005-3-22
    3. ?*/
    4. package?org.bromon.spring.test;
    5. /**
    6. ?*?@author?Bromon
    7. ?*/
    8. public?class?HelloTalker?
    9. {
    10. ????public?String?greeting()
    11. ????{
    12. ????????return?"hello?world";
    13. ????}
    14. }

      然后我們來(lái)編寫(xiě)一個(gè)spring配置文件,文件名任意,在我這里它是springConfig.xml,需要注意的是這個(gè)文件應(yīng)該存放在classpath所包含的路徑中:

    1. <?xml?version="1.0"?encoding="UTF-8"?>
    2. <!DOCTYPE?beans?PUBLIC?"-//SPRING//DTD?BEAN//EN"?"http://www.springframework.org/dtd/spring-beans.dtd">
    3. <beans>
    4.  <bean?id=”helloTalker”?class=”?org.bromon.spring.test.HelloTalker”>
    5.  </bean>
    6. </beans>

      通過(guò)使用bean標(biāo)簽,注冊(cè)了一個(gè)HelloTalker對(duì)象,它的名字叫做helloTalker。然后我們編寫(xiě)一個(gè)測(cè)試類(lèi),它的工作是利用spring框架提供的接口,加載配置文件,通過(guò)指定對(duì)象的id,獲得一個(gè)對(duì)象。它的代碼如下:
    1. /*
    2. ?*?創(chuàng)建日期?2005-3-17
    3. ?*/
    4. package?org.bromon.spring.test.junit;
    5. import?java.io.FileInputStream;
    6. import?org.springframework.beans.factory.xml.XmlBeanFactory;
    7. import?org.springframework.context.ApplicationContext;
    8. import?org.springframework.context.support.ClassPathXmlApplicationContext;
    9. import?org.bromon.spring.test;
    10. /**
    11. ?*?@author?Bromon
    12. ?*/
    13. public?class?TestStudentManager?extends?TestCase?{
    14. ????public?void?testHelloTalker()?
    15. ????{
    16. ????????try
    17. ????????{
    18. ????????????ApplicationContext?context?=new?ClassPathXmlApplicationContext("springConfig.xml");
    19. ????????????
    20. HelloTalker?ht=(HelloTalker)context.getBean(“helloTalker”);
    21. System.out.println(ht.greeting());
    22. ????????}catch(Exception?e)
    23. ????????{
    24. ????????????e.printStackTrace();
    25. ????????}
    26. ????}
    27. }

      這個(gè)程序就完成了,因?yàn)橹挥幸粋€(gè)對(duì)象HelloTalker被注冊(cè)到了spring中,所以不存在對(duì)象間的依賴(lài),當(dāng)然也就不涉及依賴(lài)注入。下面演示一個(gè)簡(jiǎn)單的依賴(lài)注入:

      第一步是修改HelloTalker,增加一個(gè)String?name屬性:
    1. public?String?name;


      為該屬性編寫(xiě)set方法,該方法必須嚴(yán)格遵守javabean的命名規(guī)則:
    1. public?void?setName(String?name)
    2. {
    3.   this.name=name;
    4. }

      修改greeting方法:

    1. public?String?greeting()
    2. {
    3.   return?"hello?"+name;
    4. }

      如你所見(jiàn),name屬性沒(méi)有初試化,因?yàn)樗闹祵⒃谶\(yùn)行過(guò)程中被spring動(dòng)態(tài)注射入。

      第二步,修改springConfig.xml中唯一的這個(gè)bean配置:

    1. <bean?id=”helloTalker”?class=”?org.bromon.spring.test.HelloTalker”>
    2.  <property?name=”name”>
    3.   <value>bromon</value>
    4.  </property>
    5. </bean>


      修改完成。我們將一個(gè)名字”bromon”寫(xiě)死在springConfig.xml中,它會(huì)被動(dòng)態(tài)的注入到HelloTalker的name屬性中,greeting方法將會(huì)把它打印出來(lái)。重新運(yùn)行剛才的junit類(lèi),可以看到結(jié)果。

      我們只演示了如何注入一個(gè)最簡(jiǎn)單的String,實(shí)際上我們可以注入任何值類(lèi)型,也可以注入任何類(lèi)的實(shí)例,也可以注入List、Map、Properties。配置文件管理了所有的對(duì)象和對(duì)象間的關(guān)系,而對(duì)象則只負(fù)責(zé)執(zhí)行自己的功能,他們的職責(zé)越少,藕合度越低,系統(tǒng)就越容易測(cè)試,管理維護(hù)也更容易。

      <bean>標(biāo)簽還有很多屬性,用于指定對(duì)象如何被實(shí)例化,它也有很多子標(biāo)簽用于配置對(duì)象的屬性,請(qǐng)大家參考相關(guān)的DTD和文檔,能夠很快的掌握。本系列文章不是spring手冊(cè),spring的基礎(chǔ)知識(shí)請(qǐng)參考spring?in?action,足夠詳細(xì)準(zhǔn)確。后面的章節(jié)更多的討論系統(tǒng)設(shè)計(jì)、開(kāi)發(fā)的一些細(xì)節(jié)和高級(jí)特性。

    下一篇:在spring中進(jìn)行hibernate開(kāi)發(fā)


    歡迎大家訪(fǎng)問(wèn)我的個(gè)人網(wǎng)站 萌萌的IT人

    posted on 2006-04-21 10:33 見(jiàn)酒就暈 閱讀(156) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): SPRING

    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    導(dǎo)航

    統(tǒng)計(jì)

    常用鏈接

    留言簿(3)

    我參與的團(tuán)隊(duì)

    隨筆分類(lèi)

    隨筆檔案

    文章分類(lèi)

    文章檔案

    收藏夾

    BLOG

    FRIENDS

    LIFE

    搜索

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 久久91亚洲精品中文字幕| 好紧我太爽了视频免费国产| 内射少妇36P亚洲区| 国产又粗又长又硬免费视频| 91精品手机国产免费| 精品97国产免费人成视频| 99亚洲男女激情在线观看| 亚洲午夜精品在线| 亚洲精品无码永久中文字幕| 亚洲A∨精品一区二区三区| 毛片网站免费在线观看| 91久久成人免费| 老司机69精品成免费视频| www成人免费视频| 美女被免费网站视频在线| 亚洲日韩看片无码电影| 亚洲另类图片另类电影| 亚洲欧洲精品视频在线观看| 亚洲高清国产AV拍精品青青草原| 亚洲日韩VA无码中文字幕| 国产片免费福利片永久| 免费无遮挡无码视频网站| 成年男女男精品免费视频网站 | 免费激情视频网站| 成年人免费观看视频网站| 成人免费的性色视频| 最近中文字幕免费2019| 性xxxx视频免费播放直播| 久久国产精品免费专区| 久久aa毛片免费播放嗯啊| 久久99精品视免费看| 99在线免费观看视频| 日韩人妻一区二区三区免费| 暖暖在线视频免费视频| 久久免费高清视频| 日韩在线永久免费播放| 2021在线观看视频精品免费| 91免费人成网站在线观看18| 日韩欧毛片免费视频| www.999精品视频观看免费| 好爽又高潮了毛片免费下载 |