spring-mvc - Springboot 应用 ResponseBodyAdvice 未触发
问题描述
我正在尝试使用响应正文建议更新审核条目,但据我所知,它永远不会被执行。我在日志中看到了 bean:
{"timestamp":"2018-08-21T15:48:08.349Z","level":"INFO","thread":"main",
"logger":"org.springframework.data.rest.webmvc.RepositoryRestHandlerAdapter",
"message":"Detected ResponseBodyAdvice bean in responseAuditAdvice","context":"default"}
我的控制器方法如下所示:
@PostMapping(path = "/stage", consumes = {
"application/json"
}, produces = {
"application/json"
})
@ResponseBody
public ResponseEntity<?> stage(@Valid @RequestBody StagingDto stagingDto,
@RequestHeader(HttpHeaders.USER_AGENT) String userAgent,
BindingResult bindingResult) {
我有一个扩展 RequestBodyAdviceAdapter 的 RequestAuditAdvice,它工作正常。此外,如果发生错误流,我也会看到异常建议正在执行。只有响应建议未能触发。有什么建议么?
这是建议豆:
@Slf4j
@RequiredArgsConstructor(onConstructor_ = @Inject)
@ControllerAdvice
public class ResponseAuditAdvice implements ResponseBodyAdvice<Object> {
private final RequestService requestService;
@Override
public boolean supports(MethodParameter returnType, Class converterType) {
return true;
}
@Override
public Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType, Class selectedConverterType,
ServerHttpRequest request, ServerHttpResponse response) {
log.info("Updating audit for response.");
String ip = new String (request.getRemoteAddress().getAddress().getAddress());
requestService.auditResponse(ip, 200);
return body;
}
}
解决方案
推荐阅读
- java - 仅从类文件制作 Maven 工件
- javascript - 如何检测拖动的元素是否被拖放到其父元素之外?
- java - org.codehaus.jackson.JsonParseException: Unexpected end-of-input: OBJECT 的预期关闭标记(来自 [Source: java.io.StringReader@6279cee3;
- shiny - 在shinyapps.io 上部署闪亮的应用程序后如何更新数据
- javascript - WordPress JavaScript 导入错误无法在模块外使用导入语句
- image - 完整的菜鸟,如何制作脚本以将 PDF 的各个页面转换为图像并将它们保存在与 PDF 同名的文件夹中?
- python - 使用从对应于数组轴的一组向量生成的产品递增多维 numpy 数组(python)
- r - 删除向量中的空元素并创建仅包含数据的向量
- amazon-web-services - AWS S3:将“阻止所有公共访问”设置为关闭是否有风险?
- c# - 带有 Autofac 依赖注入的 WPF 核心 - 迁移错误