我在Spring WebFlux中遇到了序列化器/反序列化器的问题。
我需要提供给序列化器“时区”值,该值可以从登录用户或当前请求标头接收。如何将这些值注入序列化器?
顺便说一句,也许我不应该在Reactor中使用对象映射器? (好像没有能力与mono和flux一起使用)
public class LocalDateTimeSerializer extends JsonSerializer<LocalDateTime> {
private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm");
@Override
public void serialize(LocalDateTime value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
ReactiveSecurityContextHolder.getContext()
.subscribe(c -> {
// some magic will be here
gen.writeString(value.format(FORMATTER));
});
}
}
但是
1.安全上下文在此处为空(但在控制器开始处不为空)
2.即使订阅会打电话,我也会收到异常