我们如何使用自动重新加载?
试图利用自动模块重新加载功能(如此处所述),但不幸的是文档不是太有用。
它说使用配置,但配置页面是空的。
我相信你可以从这个页面传入“监视”模块列表到embeddedServer()
调用,但是当我这样做,我得到以下异常: Module function provided as lambda cannot be unlinked for reload
。
所以它不会让你传入一个lambda作为一个应用程序模块,但是我不确定如何避免这样做,而访问Application
方法(如routing()
)。
有没有人能够最近自动重新加载工作? 如果是这样,怎么样?
Lambda可能会从包含函数中捕获状态,因此无法重新加载 – 无法恢复捕获的状态。 你必须提取应用程序到一个单独的功能,如下所示:
fun Application.module() { install(CallLogging) install(Routing) { get("/") { call.respondText("""Hello, world!<br><a href="/bye">Say bye?</a>""", ContentType.Text.Html) } … } }
然后用函数引用来启动它:
embeddedServer(Jetty, watchPaths = listOf("embedded"), module = Application::module).start()