【问题标题】:How to add logging to a webflux endpoint in spring-mvc?如何在 spring-mvc 中将日志记录添加到 webflux 端点?
【发布时间】:2020-07-11 08:50:29
【问题描述】:

我有一个现有的spring-mvc 应用程序与不同的@RestController。现在我想添加一个Mono<String> 端点,并使用 url 路径记录请求时间戳以及响应时间戳。

但是怎么做呢?我不能简单地@EnableWebFlux,因为我必须为此禁用 spring-mvc。

如何在响应被异步写回之前为捕获调用的 webflux 端点显式注册过滤器?

@RestController
public class FluxService {
   @PostMapping
   public Mono<String> post() {
         return webClient.post().uri(uri).bodyValue(payload).retrieve().bodyToMono(String.class);
   }
}

我希望在 @PostMapping 端点上增强日志记录,而不是在 webClient 上!

【问题讨论】:

    标签: java spring spring-mvc spring-webflux reactor


    【解决方案1】:

    MVC 是一个基于阻塞/servlet 的 api,将它与 webflux 混合是行不通的。他们使用不同的过滤器、安全性等,因为 MVC 假设了很多 ThreadLocal 的东西。 (Can I use SpringMvc and webflux together?)

    如果你真的想像这样混合它们,你可以使用 .doOnNext() 一旦你得到你的单声道并在那里调用你的记录器。

    【讨论】:

      猜你喜欢
      • 2020-04-26
      • 1970-01-01
      • 1970-01-01
      • 2012-07-10
      • 1970-01-01
      • 2019-06-18
      • 2018-02-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多