Просто добавлена расширяемая версия! NumberReader @ SourceForge
На консоли ничего не печатается, потому что вы не подписались на decodedRequest
, поскольку мы знаем один из аспектов Reactive:
Ничего не происходит, пока вы не подпишетесь
blockquote> [ 1114] Но если вы сделаете это, вы увидите печатное тело на консоли, но ваш код не будет работать, потому что следующие операторы не смогут прочитать тело, и вы получитеIllegalStateException
( Разрешено только одному соединению получать подписчика. )
Итак, как ее решить?
- Создайте свою собственную оболочку для
ServerWebExchange
(пожалуйста, прочитайте об этом здесь: Как регистрировать тела запросов и ответов в Spring WebFlux )Регистрировать тела в
HttpMessageDecoder
. Например, если вы видитеAbstractJackson2Decoder
, вы найдете код, в котором Spring декодирует ваш буфер в объект и может записать его:
try { Object value = reader.readValue(tokenBuffer.asParser(getObjectMapper())); if (!Hints.isLoggingSuppressed(hints)) { LogFormatUtils.traceDebug(logger, traceOn -> { String formatted = LogFormatUtils.formatValue(value, !traceOn); return Hints.getLogPrefix(hints) + "Decoded [" + formatted + "]"; }); } return value; }