【Spark Framework】処理部分を分離させる

はじめに

https://blogs.yahoo.co.jp/dk521123/37204914.html
http://blogs.yahoo.co.jp/dk521123/36426276.html
http://blogs.yahoo.co.jp/dk521123/36680982.html
で環境構築とHello Worldは、できた。
だけど、Main()部分が重くなりそうなので、今度は、処理部分(Controller)を分離させる

サンプル

その1:Routeインターフェイスを利用する

Application.java
import static spark.Spark.get;

import com.sample.spark.controllers.HelloWorldController;

public class Application {
  public static void main(String[] args) {
    get("/hello", new HelloWorldController());
  }
}
HelloWorldController.java
package com.sample.spark.controllers;

import spark.Request;
import spark.Response;
import spark.Route;

public class HelloWorldController implements Route {

  @Override
  public Object handle(Request request, Response response) throws Exception {
    return "Hello World!";
  }
}
[[http://localhost:4567/hello]]

その2:メソッド参照を利用する

 * メソッド参照については、以下の関連記事を参照のこと
https://blogs.yahoo.co.jp/dk521123/37204926.html
Application.java
import static spark.Spark.get;

import com.sample.spark.controllers.HelloWorldController;

public class Application {
  public static void main(String[] args) {
    get("/hello2_1", HelloWorldController::sayHello1);
    
    HelloWorldController controller = new HelloWorldController();
    get("/hello2_1", controller::sayHello2);
  }
}
HelloWorldController.java
package com.sample.spark.controllers;

import spark.Request;
import spark.Response;

public class HelloWorldController {
  public static String sayHello1(Request request, Response response) {
    return "Hello World 2-1!";
  }
  
  public String sayHello2(Request request, Response response) {
    return "Hello World 2-2!";
  }
}
[[http://localhost:4567/hello2_1]]
[[http://localhost:4567/hello2_2]]


関連記事

【Spark Framework】初期設定 ~ 環境構築(Gradle Project)からHello Worldまで / 新版 ~

https://blogs.yahoo.co.jp/dk521123/37204914.html

Spark Framework / 環境構築(Mavan Project)からHello Worldまで ~

http://blogs.yahoo.co.jp/dk521123/36680982.html

【Spark Framework】Spark Framework + GSONを使って REST API を作成する

https://blogs.yahoo.co.jp/dk521123/37203509.html