Spark - Java 輕量級的 Web 框架

這跟處理巨量資料的 apache spark 無關!

如果有時候只是要寫個沒幾個人用的 Restful API,或只是想要有個 HTTP 接口(透過 get/post)來呼叫我們寫好的 Java SE 程式,如果對架設 tomcat / Java EE Server 又不熟悉,那可以考慮用 Spark!

Hello World

Spark 2 以後需要用到 lambda 語法,需要安裝 Java 8。如果只有 Java 7,請找 Spark 1 或是去玩 play

以 Eclipse 為例,安裝 Spark 方法有兩種:

第一種比較簡單,直接建立 Maven 專案,在 pom.xml 加入對 spark 的 dependency 就好了。

第二種就到 github clone 下來,不過實際建立時,我還是得把這專案轉成 maven 專案,才能利用 pom.xml 把其他要用的 jar 檔抓回來...也可能我太笨沒抓到官方給的提示...

寫一個 HelloWorld.java 包含一個 main 如下:

import static spark.Spark.*;

public class HelloWorld {
    public static void main(String[] args) {
        get("/hello", (req, res) -> "Hello World");
    }
}

直接執行 HelloWorld.java,無需安裝另外的 Web Container,無需任何設定,在瀏覽器打開 http://localhost:4567/hello 就可以看到結果。

螢幕快照 2015-03-26 下午1.49.01

Spark 提供的功能

大部份 Restful API 需要的功能都有:
  • 指定 URL 路徑。
  • 存取 request 標頭/參數/...。
  • 回寫 response。
  • 處理 session。
  • 處理每個 request 前後插入 filter 做前置/後置處理。
除了單純回傳資料,也可以介接 Freemarker 這類的 HTML Template Engine,將要顯示的值以類似 JSP EL 的方式,填到預先寫好的 HTML Template 上。

也可以介接 AngularJS 做出類似 Gmail 這種只有一頁的 Web 網站。

部署

官網上沒有特別寫部屬的方式,試了一下。就直接在 Eclipse 上匯出一個可執行的 jar,執行的目標就指向有 main 的那支 java。

執行匯出的 jar 就會在本機上開啟 Web Server 了(參考下圖)!開發到使用完全就像執行一般 jar 一樣!

螢幕快照 2015-03-26 下午1.51.17

參考

0 則回應: