■概要
作成する機能の概要は以下の通り。
- application.yamlに値を設定する
- 取得した値をREST機能で返却
また、JAVAとSpringのバージョンは以下の通り。
項目 | バージョン |
---|---|
JAVA | 17 |
Spring Boot | 3.3.3 |
■設定値と出力値
application.yamlに設定する項目と、REST機能で出力する想定の値を以下に示す。
・application.yaml
app:
version: "1.0.0"
data:
element1: "hoge1"
element2: "hoge2"
element3:
element3-1: "hoge3-1"
element3-2: "hoge3-2"
・出力値(「http://localhost:8080/rest/get/yamldata」アクセス時)
{"element1":"hoge1","element2":"hoge2","element3-1":"hoge3-1","element3-2":"hoge3-2","version":"1.0.0"}
■モジュールの階層構造
作成するモジュールの階層構造を示す。
■クラス図
今回作成するモジュールのクラス図を以下に示す。
■サンプルコード
・GetYamlController.java
package com.example.demo.get.data.controller;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import com.example.demo.get.data.service.RestService;
@RestController
public class GetYamlController {
@Autowired
RestService restService;
// yamlデータを取得()
@GetMapping("/rest/get/yamldata")
public Map<String, String> getYamlDatas() {
return restService.getDataFromYamList();
}
}
・RestService.java
package com.example.demo.get.data.service;
import java.util.Map;
public interface RestService {
// yamlから取得
public Map<String, String> getDataFromYamList();
}
・RestServiceImpl.java
package com.example.demo.get.data.service;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.example.demo.get.data.util.GetDataFromYaml;
@Service("RestServiceImpl")
public class RestServiceImpl implements RestService {
@Autowired
GetDataFromYaml getDataFromYaml;
@Override
public Map<String, String> getDataFromYamList() {
return getDataFromYaml.getDatas();
}
}
・GetDataFromYaml.java
package com.example.demo.get.data.util;
import java.util.Map;
import java.util.TreeMap;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class GetDataFromYaml {
/* application.yamlの値を取得 */
@Value("${app.version}")
private String appVersion;
@Value("${app.data.element1}")
private String element1;
@Value("${app.data.element2}")
private String element2;
@Value("${app.data.element3.element3-1}")
private String element3_1;
@Value("${app.data.element3.element3-2}")
private String element3_2;
/*
* yamlのデータ取得処理
*
* @reurn yamlのデータ配列
*/
public Map<String, String> getDatas() {
// 返却用リスト
final Map<String, String> datas = new TreeMap<String, String>();
// yamlの値を追加
datas.put("version", appVersion);
datas.put("element1", element1);
datas.put("element2", element2);
datas.put("element3-1", element3_1);
datas.put("element3-2", element3_2);
return datas;
}
}