【发布时间】:2020-01-29 16:31:23
【问题描述】:
问题很简单。我有几个从同一个接口派生的事件,我想将它们反序列化为它们的propper超类。
我知道如何使用对象映射器来做到这一点,但使用我自己的映射器意味着让 Spring-Boot 将 @RequestBody 解析为字符串,然后自己进行,这不是世界末日,但我可以'不由怀疑 Spring 提供了适当的工具来处理这种情况。麻烦的是,我似乎找不到它们。
这里有一些示例代码:
示例事件:
interface YellowOpsEvent {
val user: String
val partner: String
val subject: String
val change: NatureOfChange
}
data class StatusChangedEvent(override val user: String,
override val partner: String,
override val subject: String,
val before: String,
val after: String): YellowOpsEvent {
override val change = NatureOfChange.Changed
}
控制器:
@PostMapping("/event")
fun writeEvent(@RequestBody event: YellowOpsEvent) { // < I expect this not to throw an exception
val bugme = event is StatusChangedEvent // < I expect this to return true if I send the proper event data.
}
澄清一下,我完全理解为什么这不能开箱即用。问题是,我不知道我需要做什么才能让它工作。
【问题讨论】:
-
我不确定它是否真的可以帮助你,但看看这个答案,尤其是第二个答案。 stackoverflow.com/questions/17247189/…