Typesafe Config を使って設定ファイルの値を Scala で読み込む
背景
個人的な用途としては、色々なライブラリを試したい場合にパラメーターを設定したい場合があるかと思います。
その際、ファイルに直書きしないで他のファイルに出しておきたい場面があります。
- HTTPリクエストの向き先や設定を書き換える時に、コードの変更にならずにすむ
- 設定値を確認するときに一か所にあつまっているので確認が容易
今回は Typesafe Config を使ってScalaコードに設定ファイルの値を取り込む方法をまとめています。
Typesafe Config は Scala を開発・メンテしている lightbend 製の OSS です。
使い方や導入方法は README にも書かれていますが、今回自分で使った方法についても記載しました。
使い方
依存ライブラリの追加
build.sbt のモジュールに以下のようにライブラリを追加する
libraryDependencies += "com.typesafe" % "config" % "1.4.1"
設定ファイルの追加
<project directory>/src/main/resources/application.conf に設定を記載
app {
url = "http://localhost:8080/api/webclient/test3"
connectionTimeOut = 5000
readTimeOut = 5000
}
※ application.properties でも可能
実装する Scala ファイルにインポート
import com.typesafe.config.ConfigFactory
object TypesafeConfigSample extends scala.App {
// initialize setting config.
val config = ConfigFactory.load()
// read setting value.
val url = config.getString("app.url")
val connectionTimeout = config.getInt("app.connectionTimeOut")
val readTimeout = config.getInt("app.readTimeOut")
// print values.
Seq(url, connectionTimeout, readTimeout).foreach(println)
}
結果
上の TypesafeConfigSample を実行すると、以下の結果になります。
http://localhost:8080/api/webclient/test3
5000
5000
Process finished with exit code 0
設定ファイルと読み込んで、値を標準出力できているのが確認できました。