[kotlin] ktor で config を読みたい
前提として、ktor のサンプルコードは、
embeddedServer(Jetty, 8080, module = Application::module)
.start()
のように書かれているものが多いのですが、embeddedServer()
を呼んだだけでは設定ファイルは読まれません。
fun main(args: Array<String>) {
val applicationEnvironment = commandLineEnvironment(args)
JettyApplicationHost(applicationEnvironment).start()
}
のように commandLineEnvironment
を利用するのがよさそうです。
こうすることで、コマンドライン引数もよしなに扱ってくれるようになり、たとえば -port=8080
のように port 番号をコマンドライン引数で指定できるようになります。
で、application.conf を src/main/resources/application.conf
に起きます。ktor サーバーの port 番号や、起動時のエントリポイントなどの指定もここでおこなえますし、アプリケーション独自の設定もここに書くことができます。
ktor {
deployment {
port = 8080
}
application {
modules = [ com.example.HelloKt.module ]
}
}
myapp {
foobar {
baz = 5963
}
}
あとは以下のようにすれば設定を読み込み可能です。簡単ですね。
val baz = environment.config.property("myapp.foobar.baz").getString()
environment.log.info("baz: $baz")
完全な例はこちらです。 https://github.com/tokuhirom/ktor-samples/tree/master