Java Spring 簡單範例操作與學習指引〈2〉

*** 第一個階段子目標 ***

  1. 確實在 Eclipse IDE工具內建立可以完整開發 Spring-based 的應用程式。
  2. 新增 middle-tier性質專案(純粹是 java class,沒有 UI),撰寫 {員工薪資管理Control.java} 這個控制物件的程式碼框架 (skeleton),新增一個 Spring Beans 的 XML設定檔 (config file),在設定檔內設定該控制物件的相關屬性。
  3. 利用 JUnit 測試框架 (Test Framework, Eclipse 內建),馬上撰寫該控制物件的功能測試程式碼。

一、新增專案

  1. 選擇 [File]→[New]→[Project…],當出現 [New Project] 的 wizard 對話框時,選擇 [Spring]→「Spring Project」,然後按下【Next】,出現 [New Spring Project] 對話框內,輸入新增的專案名稱: HRDemo,其它選項照預設即可,按下【Finish】完成,並將 eclipse的視界 (perspective)切至 Java EE。

    圖 3、新增 Spring Project 的對話框
    圖 3、新增 Spring Project 的對話框

  2. 在 [Project Explorer] 的專案視窗內,將滑鼠移至專案的根目錄 (HRDemo)下,右鍵點選 [Build Path]→[Configure Build Path …],出現 [Properties for HRDemo]的對話框,然後將標籤切換至 [Libraries],並點擊【Add Libraries…】,當出現 [Add Library] 對話框後,選擇 [User Library] 然後點擊 【Next】。

    圖 4、Add User Library 的對話框
    圖 4、Add User Library 的對話框

    出現 [User Library] 對話框後,點擊 【User Libraries…】,再點擊 【New…】,在 [New User Library] 的對話框內填入自訂的 Library 名稱,在此例填入:「Spring 2.x Framework」 完成後點擊 【OK】。

    圖 5、填入 User Library 名稱
    圖 5、填入 User Library 名稱

    點擊 【Add JARs】。Spring-based 的專案,至少必須載入三個相關的 jar: spring.jar, commons-logging.jar, log4j-1.2.14.jar。此三個檔案位於在上述所解壓縮 Spring Framework Library (此例目錄為 C:\java\lib\spring-framework-2.X),路徑內的 /dist, /lib/Jakarta-commons, /lib/log4j 目錄下。

    圖 6、Spring 專案必要參考的三個 jar 檔
    圖 6、Spring 專案必要參考的三個 jar 檔

二、撰寫類別控制程式碼

  1. 從 [Project Explorer] 專案視窗內,按下滑鼠右鍵,選擇 [New]→[Class],在 [New Java Class] 對話框內,在 「Package」欄位內,填入: hr.demo.hsdc;在 「Name」欄位內,填入:員工薪資管理Control。

    圖 7、新增 Java 類別 (Class)的對話框
    圖 7、新增 Java 類別 (Class)的對話框

  2. 在 eclipse 程式碼編輯視窗內,撰寫下列 java 程式碼:

    員工薪資管理Control.java

    
    package hr.demo.hsdc;
    import java.util.ArrayList;
    
    public class 員工薪資管理Control {
    	public float 計算員工薪資(String id){
    		return 0f;
    	}
    	public ArrayList 計算所有員工薪資(){
    		return null;
    	}
    }

    *** 在這個階段重點是建立程式碼框架,而不是在細節的正確性。所以只要宣告好該控制類別所需要的功能 (method)、參數、回傳值即可;至於 method 內實做的細節,在建立起整個開發環境的框架後,再回頭來補充實做細節即可。(這是 Iteration 作法關鍵之所在,知道每一個階段的重點目標為何)

  3. 新增第一個 Java Class 程式後,eclipse IDE 的 Java EE視界如下圖所示:

    圖 8、新增第一個 Java Class 後 Java EE 的 Layout
    圖 8、新增第一個 Java Class 後 Java EE 的 Layout

三、新增 Spring Beans 設定檔 (Config File)

  1. 從 [Project Explorer] 專案視窗內,按下滑鼠右鍵,選擇 [New]→[Other…],然後在 Wizard 對話框內,選擇 [Spring]→[Spring Bean Definition] ,然後點擊 [Next]。

    圖 9、選擇新增 Spring Bean XML 設定檔
    圖 9、選擇新增 Spring Bean XML 設定檔

    在出現的對話框內的 [File Name] 填入自訂的設定檔名稱 (在本例中為 beans-config),並選擇該檔案儲放的位置在 src 目錄下。

    圖 10、填入 Spring設定檔名稱與儲放位置
    圖 10、填入 Spring設定檔名稱與儲放位置

    點擊 [Next],在出現選擇 XSD namespace的對方框內,點選 [bean] 後,在下方的對話框,改選 XSD 定義為符合 Spring 2.0 (spring-beans-2.0.xsd),然後點擊 [Finish] 完成。

    圖 11、改選符合 spring 2.0 規格的 XSD 定義
    圖 11、改選符合 spring 2.0 規格的 XSD 定義

    此時在 [Project Explorer] 專案視窗 src 目錄下,即會新增一個 beans-config 檔。在程式碼編輯視窗下編輯該設定檔內容為:

    beans-config:

    
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
    	
    	<bean id="EmpControl" class="hr.demo.hsdc.員工薪資管理Control">
    	</bean>
    </beans>
    

    圖 12、新增 java spring 設定檔後 Java EE 的 Layout
    圖 12、新增 java spring 設定檔後 Java EE 的 Layout

  2. 值得留心的是,若程式碼有用到中文名稱 (如中文類別名稱),那就必須變更 eclipse 預設的編碼,否則在設定檔內有中文名稱的話,會出現 “Invalid byte 1 of 1-byte UTF-8 sequence” 的錯誤訊息。在 eclipse 的功能表 [Project]→[Properties],點選 [Resources],在右邊的「Text file encoding」,把原來是系統預設的編碼,改為 “UTF-8”。

    圖 13、改為 UTF-8 編碼,以避免中文問題
    圖 13、改為 UTF-8 編碼,以避免中文問題

四、撰寫控制類別的測試程式碼

在 eclipse 環境下要撰寫測試程式碼是非常簡單的一件事。原因是 eclipse 已內建了 JUnit 測試框架 (JUint Test Framework),作為一位程式撰寫人員,最起碼要為每一個控制性的功能(服務)性類別撰寫功能測試程式碼 (functional test code),可以說是軟體品質的最基本保障,也是應該要具備的責任與良心了。

  1. 在 [Project Explorer] 內,選擇 {員工薪資管理Control.java},按下滑鼠右鍵,選擇 [New]→[Other…],然後在 Wizard 對話框內,選擇 [JUnit]→[JUnit Test Case] ,然後點擊 [Next]。在出現的對話框內,填入以下資訊:
    • 點選 「New JUnit 4 Test」。 (新版本的測試框架可以根據 Java 5.0 以上版本的新特徵特性來建構;更簡單、易於使用,以及更敏捷的初始化與清理等工作)
    • Package: hr.demo.hsdc.test (端看 Developer 的習慣,這裡是採用將測試程式碼均放置於原始程式碼所在位置的子目錄下)
    • Name:員工薪資管理ControlTest (測試類別命名的建議為 原類別名稱+Test)
    • 勾選 setUp() method (讓測試類別可進行初始化的工作)

      圖 14、新增 JUnit 測試程式碼的對話框
      圖 14、新增 JUnit 測試程式碼的對話框

    點擊 【Next】,在出現「選擇測試的 method」對話框時,點選該控制類別所宣告的 method (此例為 “計算員工薪資()”、”計算所有員工薪資()”。 一般而言,功能測試的重心會在於測試功能性類別所揭露出的企業邏輯(business logic),這些企業邏輯的演算核心均會被封裝 (encapsulate)在功能性類別所宣告的 method 內。

    圖 15、選擇要測試的 method
    圖 15、選擇要測試的 method

  2. 編輯測試程式碼內容

    員工薪資管理ControlTest.java

    
    
    package hr.demo.hsdc.test;
    
    import static org.junit.Assert.*;
    import org.junit.*;
    import hr.demo.hsdc.*;
    
    public class 員工薪資管理ControlTest {
    	private 員工薪資管理Control control;
    
    	@Before
    	public void setUp() throws Exception {
    		control = new 員工薪資管理Control();
    	}
    
    	@Test
    	public void test計算員工薪資() {
    		assertEquals(0f, control.計算員工薪資("001"));
    	}
    
    	@Test
    	public void test計算所有員工薪資() {
    		assertEquals(null, control.計算所有員工薪資());
    	}
    }

  3. 執行測試。
    在 eclipse 的工具列 (toolbar)中,選擇 [RUN] (綠色右箭頭符號圖示),在此例中點選「員工薪資管理ControlTest」後,在下方的 [JUnit] 標籤即可顯示測試的結果。 (綠棒代表通過;若有至少一個錯誤,則會出現紅棒)

    圖 16、執行 JUnit 測試
    圖 16、執行 JUnit 測試

*** 至此已完成第一階段子目標 ***
整個專案目錄備份至 /Stage-1 目錄下。 程式碼下載

※延伸參考
 o Java Spring 簡單範例操作與學習指引〈1〉

文章導覽

   

共有 6 則迴響

  1. Hello Chris:
    若只是要知道有無 static 的使用法,那麼 google 一下就可以知道如何用了。

    但是,您這個問題倒讓我思考到 “why static” 這個地方來了,而且似乎不容易回答呢。 !^^

    我比較傾向能透過生活化的哲理來解釋這個問題,不過,真的需要讓我好好想想,屆時再另發文公佈心得。

  2. Kenming 老師:
    可以請教您嗎? 在Java裡宣告變數或method時,有static跟沒有static差別在哪裡?
    謝謝 🙂

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *