Существует несколько причин, по которым ваша реализация не работает.
Webflux является независимой от потоков c, что означает, что любой поток может иметь дело с чем угодно в любое время в приложении. Если приложение посчитает эффективным переключение текущего исполняющего потока, оно сделает это.
Приложения сервлетов, с другой стороны, назначают один поток каждому запросу и придерживаются этого потока во время выполнения.
ApplicationContext использует, как вы видите, ServletRequests, поэтому его нельзя использовать в приложении Webflux. В свою очередь, он использует threadlocal для хранения объекта запроса в указанном потоке.
В webflux вы не можете использовать threadlocal, bucase, как только приложение переключает потоки, все в threadlocal исчезает. Вот почему вы получаете ноль.
Итак, как вы передаете данные из потока в поток.
Что вам нужно сделать, это реализовать фильтр, который перехватывает запрос, извлекает необходимую информацию и помещает его в объект реактивного контекста.
https://projectreactor.io/docs/core/release/reference/#context
Это сообщение, посвященное проблеме.
https://developpaper.com/implementation-of-requestcontextholder-in-spring-boot-webflux/