[摘錄]Learn Spring in spring(二)

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

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

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

          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. }

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

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

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

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


            為該屬性編寫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. }

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

            第二步,修改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中,它會被動態(tài)的注入到HelloTalker的name屬性中,greeting方法將會把它打印出來。重新運行剛才的junit類,可以看到結(jié)果。

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

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

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


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

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

          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導(dǎo)航

          統(tǒng)計

          常用鏈接

          留言簿(3)

          我參與的團(tuán)隊

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          收藏夾

          BLOG

          FRIENDS

          LIFE

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 台东县| 南丹县| 神池县| 兰州市| 讷河市| 邯郸县| 安岳县| 罗江县| 高尔夫| 赣榆县| 隆安县| 五家渠市| 庆安县| 连平县| 乐亭县| 龙海市| 萍乡市| 沙洋县| 娄烦县| 固安县| 密云县| 西乌珠穆沁旗| 大余县| 嵊泗县| 颍上县| 综艺| 海原县| 南漳县| 托克逊县| 邯郸县| 孟州市| 卢龙县| 新化县| 榆社县| 临澧县| 丹凤县| 鄂托克旗| 凤山县| 乌审旗| 兴国县| 张家港市|