隨筆 - 24  文章 - 6  trackbacks - 0
          <2005年3月>
          272812345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          常用鏈接

          隨筆分類(23)

          積分與排名

          • 積分 - 13790
          • 排名 - 2084

          最新評論

          二、spring管理對象的簡單例子

           

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

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

          /*
           * 創(chuàng)建日期 2005-3-22
           
          */

          package org.bromon.spring.test;

          /**

           * @author Bromon

           
          */


          public class HelloTalker 

          {
              
          public String greeting()

              
          {

                  
          return "hello world";

              }

          }

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

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

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

          /*
           * 創(chuàng)建日期 2005-3-17
           
          */


          package org.bromon.spring.test.junit;

          import java.io.FileInputStream;

          import org.springframework.beans.factory.xml.XmlBeanFactory;

          import org.springframework.context.ApplicationContext;

          import org.springframework.context.support.ClassPathXmlApplicationContext;
          import org.bromon.spring.test;
          /**
           * @author Bromon
           
          */


          public class TestStudentManager extends TestCase {
              
          public void testHelloTalker() 
              
          {
                  
          try
                  
          {
                      ApplicationContext context 
          =new ClassPathXmlApplicationContext("springConfig.xml");

          HelloTalker ht
          =(HelloTalker)context.getBean(“helloTalker”);

          System.
          out.println(ht.greeting());

                  }
          catch(Exception e)

                  
          {

                      e.printStackTrace();

                  }


              }

          }

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

            第一步是修改HelloTalker,增加一個String name屬性:

          public String name;

            為該屬性編寫set方法,該方法必須嚴(yán)格遵守javabean的命名規(guī)則:

          public void setName(String name)

          {

                 this.name=name;

          }

            修改greeting方法:

          public String greeting()

          {

          return "hello "+name;

          }


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

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

          <bean id=helloTalker class= org.bromon.spring.test.HelloTalker>

              <property name=name>

                  <value>bromon</value>

              </property>

          </bean>

           

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

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

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

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

          posted on 2005-03-28 14:09 Sometimes Java 閱讀(315) 評論(0)  編輯  收藏 所屬分類: Tech Flow
          主站蜘蛛池模板: 商丘市| 静宁县| 三江| 营山县| 张掖市| 沾益县| 孝昌县| 西乌珠穆沁旗| 合川市| 屏边| 枣强县| 沁源县| 新宁县| 泗阳县| 新营市| 乡城县| 黎城县| 额济纳旗| 会东县| 岱山县| 湘阴县| 贵港市| 德昌县| 马山县| 平度市| 永城市| 高平市| 乡城县| 长垣县| 宜章县| 新乡县| 中阳县| 西青区| 三原县| 河池市| 榆树市| 清远市| 凉山| 射洪县| 沛县| 泸西县|