JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Java Tools  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友   
reply to postflat modego to previous topicgo to next topic
本主題所含的標籤
無標籤
作者 Re:第一個Spring程式 [Re:caterpillar]
caterpillar

良葛格

版主

發文: 2613
積分: 70
於 2005-10-16 19:48 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
根據Spring 1.2.5所撰寫的第一個Spring程式如下。。。

=====

首先要取得Spring的相關檔案,Spring的檔案放在 SourceForge

撰寫此文時,Spring最新的版本是1.2.5,有兩個下載版本,一個是spring-framework-1.2.5-with- dependencies.zip,一個是spring-framework-1.2.5.zip,with-dependencies的包括一些 ant、jakarta-commons、struts、velocity等等其它開源Java專案的相依檔案,如果您也需要這些相關檔案,可以下載這個版本,如果您已經有這些相關檔案,則只需要下載spring-framework-1.2.5.zip這個檔案。

下載zip檔案並解壓縮之後,在dist目錄下就是使用Spring所需要的相關檔案,如果下載的是with-dependencies版本,則在lib 目錄中的是您可能會用到的相依檔案。在dist目錄下,spring-core.jar是Spring的核心,如果日後需要使用到Spring其它的子框架支援,再將其它的jar檔案加入即可,例如spring-aop.jar、spring-webmvc.jar等等。您也可以直接使用 spring.jar這個檔案,它包括了所有Spring支援的功能所需要的所有類別,而不再需要加入個別的jar檔案。

注意在Spring 1.2之後,原先於spring-core.jar中與Bean相關的一些套件,現在已移至spring-beans.jar中。

就這邊接下來要練習的第一個Spring程式,要將spring-core.jar、spring-beans.jar,以及相依的commons- logging.jar加至Classpath的路徑中,您可以在lib目錄的jakarta-commons目錄中找到。

來撰寫您的第一個組件(Component),它只是一個簡單的JavaBean,用來向使用者打聲招呼:
1
2
3
4
5
6
7
8
9
10
11
12
package onlyfun.caterpillar; 
 
public class HelloBean { 
    private String helloWord; 
    
    public void setHelloWord(String helloWord) { 
        this.helloWord = helloWord; 
    } 
    public String getHelloWord() { 
        return helloWord; 
    } 
}


稍後您可以透過setHelloWord()這個Setter來設定新的招呼語,不過並不是親自撰寫程式來作這些事,而是在組態檔案定義,由Spring 來為您作設定的動作,接著可以撰寫Bean的定義檔案,定義檔案會告訴Spring容器,如何完成相依物件的關係注入等動作,Bean定義檔的名稱可以自由定義,例如這邊取名為beans-config.xml:
1
2
3
4
5
6
7
8
9
10
11
12
<?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="helloBean" 
          class="onlyfun.caterpillar.HelloBean"> 
        <property name="helloWord">
            <value>Hello!Justin!</value>
        </property> 
    </bean> 
</beans>


定義檔中定義了JavaBean的別名與來源類別,<property>標籤中設定了希望注入至JavaBean的字串值,撰寫一個簡單的示範程式:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package onlyfun.caterpillar; 
 
import org.springframework.core.io.FileSystemResource;
import org.springframework.core.io.Resource;
import org.springframework.beans.factory.BeanFactory; 
import org.springframework.beans.factory.xml.XmlBeanFactory; 
 
public class SpringDemo { 
    public static void main(String[] args) { 
        Resource rs = 
            new FileSystemResource("beans-config.xml"); 
        BeanFactory factory = 
            new XmlBeanFactory(rs); 
        
        HelloBean hello = 
            (HelloBean) factory.getBean("helloBean"); 
        System.out.println(hello.getHelloWord()); 
    } 
}


BeanFactory是 Factory 模式 的一個實作例子,但用途更為一般,可以建立、管理不同型態的物件,由於這邊所使用的Bean定義檔是XML,所以使用實作BeanFactory介面的 XmlBeanFactory來作為管理Bean的實際物件,在Spring 1.2中,XmlBeanFactory只接受實作Resource介面的物件,像是ClassPathResource、 FileSystemResource、InputStreamResource、ServletContextResource、 UrlResource等,分別表示不同的檔案來源物件,這邊所使用的是FileSystemResource,表示指定相對路徑或絕對路徑來取得 Bean定義檔, 同樣的,如果您的Bean定義檔是位於Classpath路徑中,您也可以使用ClasspPathResource來取得定義檔。

這是從比較低層次的角度來使用Spring的IoC容器功能,藉由BeanFactory來讀取組態檔案並完成依賴的關聯注入,這邊的依賴是什麼?指的是 HelloBean相依於String物件,透過Setter所保留的介面,使用Setter injection來完成這個依賴注入,而不是將招呼語寫死在HelloBean,BeanFactory是整個Spring的重點所在,整個 Spring的核心都圍繞著它,在這邊使用的是XmlBeanFactory,負責讀取XML組態檔案,您也可以使用properties檔案,這之後會再介紹。

BeanFactory讀取Bean的組態設定並完成關係維護之後,可以藉由getBean()方法並指定Bean的別名來取得Bean實例,如果使用 BeanFactory的話,只有在真正需要Bean物件時,才會實際建立Bean實例,而不是在一開始建立BeanFactory時就建立Bean實例,來看看實際運行之後的效果:
1
2
3
2005/10/16 下午 07:14:03 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
資訊: Loading XML bean definitions from file [C:\workspace\SpringDemo\beans-config.xml]
Hello!Justin!


如果今天您要想改變招呼語,則只要更改bean.xml就可以了,不用修改主要的程式,從比較一般的角度來看,就意味著如果您想要改變一些物件之間的依賴關係,則只要修改組態檔即可,而不用修改組件的任何一行程式。


caterpillar edited on 2013-03-24 15:41
reply to postreply to post
良葛格學習筆記
話題樹型展開
人氣 標題 作者 字數 發文時間
11627 第一個Spring程式 caterpillar 3347 2004-10-21 10:44
9257 Re:第一個Spring程式 linexpmail 307 2004-10-21 12:29
8309 Re:第一個Spring程式 ken1106 183 2005-06-21 16:13
8075 Re:第一個Spring程式 ivantang5178 128 2005-09-15 14:58
7947 Re:第一個Spring程式 caterpillar 198 2005-09-15 19:42
9965 Re:第一個Spring程式 elviscat 814 2005-09-22 09:46
8021 Re:第一個Spring程式 try 1338 2005-09-22 14:05
8709 Re:第一個Spring程式 caterpillar 3745 2005-10-16 19:48
7838 Re:第一個Spring程式 elviscat 32 2005-10-18 09:05
7716 Re:第一個Spring程式 yeafee 347 2005-10-19 17:32
6493 Re:第一個Spring程式 greenapple1981 11 2006-11-15 13:44
» JWorld@TW »  Java Tools

reply to postflat modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8