【Java】Spring:ヘルスチェックAPI – 現在時刻と10桁の乱数をJson形式で返す –

■概要

サーバの死活監視(ヘルスチェック)として、/healthへGetでアクセスした場合、以下の項目をJson形式で返却する。

Json形式で返却する項目

  • 10桁の乱数(パディング左0埋め)
    例:0123456789
  • 現在時刻

また、実装するJavaとSpring Bootのバージョンは以下の通り。

項目バージョン
Java17
Spring Boot3.4.0
JavaとSpring bootのバージョン

■返却するJsonの形式

本モジュールで返却するJson形式は以下の通りとする。

{
    "rand10Digits": "<<10桁の乱数>>",
    "timeStampNow": "<<現在時刻>>"
}

■クラス図

実装するモジュールのクラス図は以下の通り。

なお、HealthCheckDTOについて、ゲッター・セッターはLombokを使用するものとする。

※pom.xml:Lombokの使用抜粋

<dependencies>
	<!-- ・・・中略・・・ -->
	<dependency>
		<groupId>org.projectlombok</groupId>
		<artifactId>lombok</artifactId>
		<optional>true</optional>
	</dependency>
	<!-- ・・・中略・・・ -->
<dependencies>

■モジュールの階層構造

実装するプロジェクト「healthcheck10digits」の階層構造は以下の通り。

■サンプルコード

・HealthCheckController.java

package com.example.healthcheck10digits.controller;

import java.time.LocalDateTime;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;

import com.example.healthcheck10digits.dto.HealthCheckDTO;
import com.example.healthcheck10digits.util.Rand10DigitsUtil;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/health")
public class HealthCheckController {

  @GetMapping
  public HealthCheckDTO healthCheckDTO(){
    // 10桁生成クラスのインスタンス
    Rand10DigitsUtil rand10DigitsUtil = new Rand10DigitsUtil();

    // 10桁乱数と現在時刻を返す
    return new HealthCheckDTO(rand10DigitsUtil.get10DigitsNumber(), LocalDateTime.now());
  }

}

・Rand10DigitsUtil.ava

package com.example.healthcheck10digits.util;

public class Rand10DigitsUtil {

  public String get10DigitsNumber(){

    // 9,999,999,999までの乱数を生成
    final  long randNum =  (long)(Math.random() * 10_000_000_000L);

    // 10桁に満たない場合は左側を0でパディングして返す
    return String.format("%010d", randNum);
  }

}

・HealthCheckDTO.java

package com.example.healthcheck10digits.dto;

import java.time.LocalDateTime;
import lombok.Value;

@Value
public class HealthCheckDTO {
  String rand10Digits;
  LocalDateTime timeStampNow;
}

■実行結果

・乱数が10桁未満の場合


・乱数が10桁の場合

コメント