外部設定値を保存するプロパティファイルを追加する。.propertiesかYAML形式か迷うところだが、個人的に見やすいYAML形式にする。最近は YAML形式を見ることも多くなってきたと思うので。
ただ公式ページにYAMLの欠点が書いてあるので要件に合わせて確認した方が良い。
yamlファイルにリネーム
SpringBootでプロジェクト作るとapplication.propertiesがデフォルトでresources直下にあるので拡張子をymlに変更する。
設定
外部ファイルとして設定したいものを設定、ここでは外部APIのurlを設定してみる。
external: task: url: http://localhost:50000 user: url: http://localhost:50001
設定の読み込み
読み込み方法は何種類かあるようだけど、ひとまず簡単な@Valueアノテーションを使って設定値を取得する。
@Repository
class TaskRepository(restTemplateBuilder: RestTemplateBuilder) {
@Value("\${external.task.url}")
val taskApiUrl:String = ""
private var restTemplate: RestTemplate? = null
init {
restTemplate = restTemplateBuilder.build()
}
fun getTask(taskId: Int): Task? {
val uri = "$taskApiUrl/tasks/$taskId"
return restTemplate?.getForObject(uri, Task::class)
}
}
実行
UnitTestが成功することとサービス起動してAPIが動くことを確認。
http://localhost:8080/tasks/12345
{"taskId":12345,"title":"タスクのタイトル","description":"タスクの詳細説明","userName":"タスクの管理者A"}
コード
https://github.com/little-engineer/bff-sample/pull/15/files
コメントを残す