【发布时间】:2021-01-27 05:35:45
【问题描述】:
我正在构建一个 Kotlin 服务器应用程序。我知道我需要一个特定的 Json 配置,例如 Json { ignoreUnknownKeys = true }。
我的问题是声明一个顶级var(或者可能是一个将配置作为属性的object)并在任何地方使用它是否更有意义,或者是否在每个地方创建一个新的Json {}功能。
我想我对使用单例的担忧是在我有多个同时请求的情况下需要使用配置的情况。我对 JVM 内部结构或 kotlinx 架构知之甚少,不知道这是否是个问题。同时,在每个函数中创建新配置似乎效率很低,每次都创建新对象。
// which to choose?
// top-level val
val myJson : Json = Json { ignoreUnknownKeys = true }
// top-level object with property
object myJConfig {
val myJson : Json = { ignoreUnknownKeys = true }
}
// create a new config within a function
class myClass {
fun myFunc() {
val myJson : Json = { ignoreUnknownKeys = true }
... rest of function here ...
}
}
【问题讨论】:
-
某个“事物”的多个用户没有问题。问题在于并发修改,因此只要您的任何过程都没有真正改变对象中的某些内容,单例就可以了。
-
@Alex.T 谢谢。不,不会有任何修改。如果一个请求当前正在使用解析器,我担心速度会变慢,另一个请求必须等到第一个请求完成。如果解析一个长 JSON 字符串需要 250 毫秒,我是否会限制我的服务器每秒处理超过 4 个请求?
标签: kotlin jvm singleton kotlinx.serialization