#12 [SpringBoot/KotlinでBFF]プロパティファイルの追加(YAML形式)と読み込み

外部設定値を保存するプロパティファイルを追加する。.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://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-external-config

コード
https://github.com/little-engineer/bff-sample/pull/15/files

コメントを残す

メールアドレスが公開されることはありません。

ABOUT US
little
15年以上プログラマーをしているエンジニアです。Kotlin, Java, Python, C++を使用したServerSideの開発に携わってきました。とりあえずやってみるスタイルで記事を更新していきます。