Sassyブログ

好きなことで暮らしを豊かにするブログ

TypesafeConfigを使用して外部ファイルを読み込む

Scalaでデータ移行ツールを作成した時の話

職場でPlayFrameworkを使用しており、 ツールの実行ごとに複数環境のDB接続設定情報ファイルを個別に指定して読み込ませたかったため、 実行時にファイルを指定できるようにした。

ファイル読み込みにcom.typesafe.configパッケージのConfigFactoryを使用

import com.typesafe.config.Config
import com.typesafe.config.ConfigFactory

object Migration {

  def main(args: Array[String]): Unit = {
  val config: Config = ConfigFactory.load()
  val url: String = config.getString("db.default.url")
  val user: String = config.getString("db.default.user")
  val pw: String = config.getString("db.default.password")

  ・・・省略

  }
}

このような感じでファイルを読み込んで値を取得することができる。

あとはjarを作成する。(jarの作成方法について記事の趣旨と異なるため割愛する)

そしてjarを実行する際にオプションに「-Dconfig.file」を指定する。

java -Dconfig.file="/hoge/test.conf" -jar [実行可能ファイル]

「-Dconfig.file」を指定することによりjarにパッケージングされていない設定ファイルを読み込むことができる。

ちなみにクラスパス上の設定ファイルを指定したい場合は、「-Dconfig.resource」を使用する。

以上