Ktor在外部配置文件中使用HOCON(Human-Optimized Config Object Notation)格式。 在此文件中,您可以配置要侦听的端口或要加载的模块等内容。 此格式类似于JSON,但经过优化,可供人类读取和编写,并支持环境变量替换等其他功能。 在这种情况下,您将服务器引擎配置为与指向特定EngineMain的mainClassName一起使用。
当使用embeddedServer时,Ktor还使用一组带有类型DSL(域特定语言)的lambda来配置应用程序和服务器引擎。
HOCON文件
这是配置Ktor应用程序的首选方法,因为它允许您轻松更改配置,而无需重新编译应用程序。
当Ktor使用EngineMain启动时,或者通过调用commandLineEnvironment,它会尝试从应用程序资源加载名为application.conf的HOCON文件。 您可以使用命令行参数更改文件的位置。
可用作mainClassName的可用开发引擎:
io.ktor.server.cio.EngineMain
io.ktor.server.tomcat.EngineMain
io.ktor.server.jetty.EngineMain
io.ktor.server.netty.EngineMain
复制代码
Ktor仅要求您使用ktor.application.modules属性指定在启动服务器时要加载的模块。 所有其他属性都是可选的。
Ktor(application.conf)的典型简单HOCON文件如下所示:
ktor {
deployment {
port = 8080
}
application {
modules = [ io.ktor.samples.metrics.MetricsApplicationKt.main ]
}
}
复制代码
使用.表示法相当于:
ktor.deployment.port = 8080
ktor.application.modules = [ io.ktor.samples.metrics.MetricsApplicationKt.main ]
复制代码
Ktor允许您进行更多配置:从其他核心配置到Ktor功能,甚至是应用程序的自定义配置:
ktor {
deployment {
environment = development
port = 8080
sslPort = 8443
autoreload = true
watch = [ httpbin ]
}
application {
modules = [ io.ktor.samples.httpbin.HttpBinApplicationKt.main ]
}
security {
ssl {
keyStore = build/temporary.jks
keyAlias = mykey
keyStorePassword = changeit
privateKeyPassword = changeit
}
}
}
jwt {
domain = "https://jwt-provider-domain/"
audience =