【发布时间】:2020-07-23 03:17:36
【问题描述】:
我想知道从资源中读取、解析和提供文件的正确方法是什么。
目前,我做这样的事情:
fun getFile(request: ServerRequest): Mono<ServerResponse> {
val parsedJson =
objectMapper.readValue(readFile("fileName.json"), JsonModel::class.java)
// modify parsed json
return ok().contentType(APPLICATION_JSON).bodyValue(parsedJson)
}
private fun readFile(fileName: String) =
DefaultResourceLoader()
.getResource(fileName)
.inputStream.bufferedReader().use { it.readText() }
我注意到 Netty 中的 JsonObjectDecoder 类,但我不知道是否可以应用于我的用例。
那么读取/解析资源文件的反应方式是什么?
【问题讨论】:
-
所有 i/o 操作都是阻塞的。文件的读取应包含在
Mono#fromCallable中并放置在它自己的scheduler上,这是有界的以避免线程饥饿。您可以在此处阅读有关阻止呼叫的更多信息projectreactor.io/docs/core/release/reference/…
标签: json kotlin spring-webflux project-reactor