Skip to content

Com.typesafe.config.ConfigFactory

설정값 획득하는거

Example

Scala version

package com.my.api.utils

import scala.util.{Failure, Success, Try}
import java.io.File

import com.typesafe.config.ConfigFactory

object AppInfo {
  val configFile = "application.conf"
  val resourceObject = getClass.getResource("/" + configFile)

  lazy val version       = conf.getString("application.version")
  lazy val host          = conf.getString("application.host")
  lazy val port          = conf.getInt("application.port")
  lazy val coreUrl       = conf.getString("application.coreUrl")
  lazy val pluginRootDir = Try(conf.getString("plugin.rootDir"))
  lazy val apiUrl        = conf.getString("application.apiUrl")

  lazy val dbUrl      = conf.getString("db.default.url")
  lazy val dbPort     = conf.getString("db.default.port")
  lazy val dbUser     = conf.getString("db.default.user")
  lazy val dbPassword = conf.getString("db.default.password")

  lazy val minioUrl         = conf.getString("minio.url")
  lazy val minioPort        = conf.getString("minio.port")
  lazy val minioAccessToken = conf.getString("minio.access-token")
  lazy val minioSecretToken = conf.getString("minio.secret-token")

  def conf = new File(configFile).exists() match {
    case true =>
      println(s"Config load success: ${configFile}")
      ConfigFactory.parseFile(new File(configFile)).resolve()
    case false =>
      println(s"Config load Fail retry in ${resourceObject.getPath}")
      // ConfigFactory.parseFile(new File(getClass.getResource("/" + configFile).getPath)).resolve() // sbt 에서 task로 실행시 정상적으로 진행되지 않는다.
      ConfigFactory.parseURL(resourceObject).resolve()
  }
}

사용 방법은, 그냥 가져다 쓰면 된다.

import com.my.api.utils.AppInfo
// ...
println(s"Server online at http://${AppInfo.host}:${AppInfo.port}/")

See also