Pureconfig Typesafe Config с иерархическими корневыми ключами

У меня есть ниже в application.conf и пытаюсь выяснить лучший способ определить мой класс класса для загрузки конфигураций:

allKeys {
   mysql {
     dev {
       host = <host1>
       user = <user1>
     }
     prod {
       host = <host1>
       user = <user1>
   }
   hdfs {
     endpoint = <host1>
     port = <port1>
   }
}

my case classes:
  case class Settings(mysql: DbSettings, hdfs: HdfsSettings)
  case class DbSettings(host: String, user: String)
  case class HdfsSettings(endpoint: String, port: String)

У меня возникают проблемы со знанием того, как правильно загрузить это, чтобы оно не зависало при поиске похожих ключей в hdfs.

1 ответ

Решение

Вам нужно определить класс вашего дела, чтобы он соответствовал структуре конфигурации.

case class HdfsConfig(endpoint: String, port: Int)
case class DbConfig(host: String, user: String)
case class MySqlConfig(dev: DbConfig, prod: DbConfig)
case class AllConfigs(mysql: MySqlConfig, hdfs: HdfsConfig)

case class MyConfig(allKeys: AllConfigs)

Теперь вы можете прочитать это как,

loadConfig[MyConfig](conf)
Другие вопросы по тегам