Web系開発メモ

Java, JavaScript, CSS, HTML などの記事を書いています。

SpringBoot入門:サービスクラスを使う

Spring Boot の Webアプリで、サービスクラスを使う方法を書きます。サービスクラスは「ドメイン駆動設計 - Wikipedia」に登場するオブジェクトで、なんらかの処理(機能)を実装するものです。

前提

この記事は、入門記事「JSONを返す」の資源(ビルドファイル、クラス等)を利用しています。必要に応じて参照して頂けると嬉しいです。

手順1. サービスクラスの作成

例として、乱数を生成するサービスクラスを実装してみます。

gssb/src/main/java/gssb/service/RandomNumberService.java

package gssb.service;

import org.springframework.stereotype.Service;

@Service  // サービスクラスに付与。
public class RandomNumberService {

  // 整数0-9の乱数を返却。
  public int zeroToNine() {
    return (int) (Math.random() * 10);
  }
}

@Service が付いていると、アプリ起動時に SpringBoot(のコンテナ)が管理してくれます。管理されたオブジェクトは、他のオブジェクトに設定(DI:Dependency Injection)できたりします。

手順2. コントローラの作成

乱数をレスポンスとして返却するクラスを作成します。

gssb/src/main/java/gssb/service/RandomNumberService.java

package gssb.controller;

import java.util.Collections;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import gssb.service.RandomNumberService;

@RestController
public class RandomNumberController {

  // サービスクラスがDIされる。
  @Autowired RandomNumberService random;
  
  // 乱数をレスポンスとして返却する。
  @RequestMapping("/random")
  public Map<String, Integer> random() {
    int value = random.zeroToNine();
    return Collections.singletonMap("value", value);
  }
}

@Autowired が付いた変数 random に、 先程のサービスクラスが設定(DI)されます。

手順3. 起動

次のコマンドでアプリを起動します。

gssb > mvn spring-boot:run

手順4. 確認

http://localhost:8080/random にアクセスして、次のような JSON が返ってくれば成功です。

{"value":0}

ソースコード

gssb - GitHub
※ プロジェクト名の gssb は、Getting Started Spring Boot の略です。