我试图在应用程序中执行控制器方法后打印响应负载,但 afterReturning 方面似乎不起作用。这是一个 spring webflux 应用程序。
@AfterReturning(value="pointCut()",returning = "respValue")
public void logResponse(JoinPoint joinPoint, Object respValue) throws Exception {
.......
log.info("response :: {}",respValue);
}
我的控制器方法:
@PostMapping("/test")
public Flux<Test> addCars(ServerWebExchange serverWebExchange) {
return service.addCars()
.onErrorResume(ex -> {
log.info("error ", ex);
return Mono.error();
});
}
我能够通过修改我的方面来解决此问题,如下所示:
@AfterReturning(value="pointCut()",returning = "respValue")
public void logResponse(JoinPoint joinPoint, Object respValue) throws Exception {
Flux<Object> resp = respValue instanceof Flux ? (Flux<Object>) respValue : Flux.just(respValue);
resp.doOnNext(returnValue ->{
log.info("response :: {}",respValue);
}).subscribe();
}