gpt4 book ai didi

java - ResponseAdvice 未触发

转载 作者:行者123 更新时间:2023-12-01 23:02:50 30 4
gpt4 key购买 nike

SO 中有很多问题,但几乎没有可行的解决方案。

只是使用 @ControllerAdvice 简单实现 ResponseAdvice

Controller

@RestController
@ReqeustMapping("/test")
class TestController{
@RequestMapping( method=GET )
public String test(){ return "Test"; }
}

建议

@RestControllerAdvice
public class ResponseDecorator implements ResponseBodyAdvice<String> {

@Autowired
ObjectMapper mapper;

@Override
public boolean supports(MethodParameter returnType,
Class<? extends HttpMessageConverter<?>> converterType) {
return returnType.getParameterType().equals(String.class);
}

@Override
public String beforeBodyWrite(String body,
MethodParameter returnType,
MediaType selectedContentType,
Class<? extends HttpMessageConverter<?>> selectedConverterType,
ServerHttpRequest request,
ServerHttpResponse response) {
System.out.println ( "Just print this when before sending ");
return body;
}
}

beforeBodyWrite根本不会触发。该应用程序完全由注释驱动。并且建议和 Controller 都在同一个包中。我错过了什么!

最佳答案

好的。愚蠢的错误。这里的问题是支持方法

  @Override
public boolean supports(MethodParameter returnType,
Class<? extends HttpMessageConverter<?>> converterType) {
return returnType.getParameterType().equals(String.class);
}

使此方法返回 TRUE 已解决问题。

  @Override
public boolean supports(MethodParameter returnType,
Class<? extends HttpMessageConverter<?>> converterType) {
return true;
}

supports 方法应返回true。因此,根据您的要求调整您的逻辑。

关于java - ResponseAdvice 未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58415426/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com