マイクロフレームワークなしがし Spark編

マイクロフレームワークなにがしにて、ninja framework を触ってみましたが、
今度は Spark というフレームワークにトライしてみようと思います。

Webサイト

http://sparkjava.com/

セットアップ

https://sparktutorials.github.io/2015/04/02/setting-up-a-spark-project-with-maven.html

チュートリアルの通りにやると、POMを書いてmain関数にルーティング(+コントローラ)を記述するだけですね。
ninjaはplayライクなフレームワークでしたが、sparkはsinatraを模倣したフレームワークのようです。

import static spark.Spark.*;

public class Main {

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

main関数をjavaコマンドなどで通常のjavaアプリケーションとして実行します。
すると、Webサーバーが起動するので、ブラウザで http://localhost:4567 を開いて、hello worldが表示されればOK。

hello world

Viewのカスタマイズ

上記はレスポンスをそのまま返すだけなので、
今度はviewをテンプレート化します。

各種テンプレートエンジンの実装は、jarに分離されているので、下記を参考に、pomに依存関係を追加します。
http://sparkjava.com/documentation.html#views-templates

今回は、FreeMarkerを使った場合を試してみました。

  • Model
    public class Book {
    	private String name;
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    }
    

  • Controller

    public class Main {
    
    	public static void main(String[] args) {
    		Book book = new Book();
    		book.setName("日々創造");
    
    		get("/", (req, res) -> new ModelAndView(book, "book.ftl"), new FreeMarkerEngine());
    	}
    }
    

  • View (src/spark/template/freemarker/book.ftlに配置するのがポイント)

    book name: ${name}
    

  • 出力結果

    book name: 日々創造
    

テンプレートのディレクトリがデフォルトで spark/template/freemarker になっているので注意。
sinatraライクに書きたい方はsparkはオススメなのではないでしょうか。
個人的にはninjaの方が好みかも?