■概要
サーバの死活監視(ヘルスチェック)として、/healthへGetでアクセスした場合、以下の項目をJson形式で返却する。
Json形式で返却する項目
- 10桁の乱数(パディング左0埋め)
例:0123456789 - 現在時刻
また、実装するJavaとSpring Bootのバージョンは以下の通り。
項目 | バージョン |
---|---|
Java | 17 |
Spring Boot | 3.4.0 |
■返却する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桁の場合
コメント