おおくまねこ

職業プログラマーです。興味のある話題を書いています。

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

設定ファイルと読み込んで、値を標準出力できているのが確認できました。