Да, вы можете использовать WebFilter
для этого. Смотрите пример кода ниже:
@Component
@Slf4j
public class RequestTimingFilter implements WebFilter {
@Override
public Mono<Void> filter(ServerWebExchange exchange, WebFilterChain chain) {
long startMillis = System.currentTimeMillis();
return chain.filter(exchange)
.doOnSuccess(aVoid ->
log.info("Elapsed Time: {}ms", System.currentTimeMillis() - startMillis)
);
}
}
Обратите внимание на вызов doOnSuccess
, который выполняется только при успешном выполнении запроса. Для ошибок, вы можете добавить doOnError
вызов, чтобы увидеть время запроса.