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

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

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

    [摘錄]Learn Spring in spring(二)

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

    Bromon原創 請尊重版權

      任何需要交給spring管理的對象,都必須在配置文件中注冊,這個過程被稱為wiring,下面做一個最簡單的Hello?world演示,我們將要注冊的類如下:

    1. /*
    2. ?*?創建日期?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. }

      然后我們來編寫一個spring配置文件,文件名任意,在我這里它是springConfig.xml,需要注意的是這個文件應該存放在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>

      通過使用bean標簽,注冊了一個HelloTalker對象,它的名字叫做helloTalker。然后我們編寫一個測試類,它的工作是利用spring框架提供的接口,加載配置文件,通過指定對象的id,獲得一個對象。它的代碼如下:
    1. /*
    2. ?*?創建日期?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. }

      這個程序就完成了,因為只有一個對象HelloTalker被注冊到了spring中,所以不存在對象間的依賴,當然也就不涉及依賴注入。下面演示一個簡單的依賴注入:

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


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

      修改greeting方法:

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

      如你所見,name屬性沒有初試化,因為它的值將在運行過程中被spring動態注射入。

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

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


      修改完成。我們將一個名字”bromon”寫死在springConfig.xml中,它會被動態的注入到HelloTalker的name屬性中,greeting方法將會把它打印出來。重新運行剛才的junit類,可以看到結果。

      我們只演示了如何注入一個最簡單的String,實際上我們可以注入任何值類型,也可以注入任何類的實例,也可以注入List、Map、Properties。配置文件管理了所有的對象和對象間的關系,而對象則只負責執行自己的功能,他們的職責越少,藕合度越低,系統就越容易測試,管理維護也更容易。

      <bean>標簽還有很多屬性,用于指定對象如何被實例化,它也有很多子標簽用于配置對象的屬性,請大家參考相關的DTD和文檔,能夠很快的掌握。本系列文章不是spring手冊,spring的基礎知識請參考spring?in?action,足夠詳細準確。后面的章節更多的討論系統設計、開發的一些細節和高級特性。

    下一篇:在spring中進行hibernate開發


    歡迎大家訪問我的個人網站 萌萌的IT人

    posted on 2006-04-21 10:33 見酒就暈 閱讀(165) 評論(0)  編輯  收藏 所屬分類: SPRING

    <2025年7月>
    293012345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

    導航

    統計

    常用鏈接

    留言簿(3)

    我參與的團隊

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    收藏夾

    BLOG

    FRIENDS

    LIFE

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 一二三四视频在线观看中文版免费| 99精品国产成人a∨免费看| 国产精品亚洲综合网站| 春意影院午夜爽爽爽免费| 免费看的黄色大片| 亚洲色www永久网站| 成人毛片免费在线观看| 亚洲人成无码www久久久| 羞羞视频网站免费入口| 亚洲国产精品综合久久一线| 亚洲AV无码一区二区三区在线观看 | 免费人妻无码不卡中文字幕18禁| 亚洲色大成网站www永久一区| 亚洲最大福利视频网站| 华人在线精品免费观看| 成人a视频片在线观看免费| 国产日产亚洲系列| 亚洲成av人无码亚洲成av人| 美女被免费网站91色| 亚洲老妈激情一区二区三区| 国产免费网站看v片在线| 亚洲福利一区二区精品秒拍| 色哟哟国产精品免费观看| 亚洲中文字幕成人在线| 久久青草免费91线频观看站街| 日韩中文字幕在线免费观看| 羞羞视频网站免费入口| 亚洲国产另类久久久精品黑人| 永久免费视频网站在线观看| 亚洲国产中文字幕在线观看| a级毛片无码免费真人久久| 亚洲精品中文字幕乱码影院| 国产美女无遮挡免费网站| 亚洲三级在线观看| 亚洲精品无码日韩国产不卡?V| 色欲A∨无码蜜臀AV免费播| 中文字幕乱码亚洲无线三区| 亚洲中久无码不卡永久在线观看| 亚洲免费网站在线观看| 免费国产va视频永久在线观看| 成年女人18级毛片毛片免费观看|