Spring 使用@ControllerAdvice时,弹簧mvc静止返回标准响应不工作
我想使用@ControllerAdvice创建一个标准响应Spring 使用@ControllerAdvice时,弹簧mvc静止返回标准响应不工作,spring,Spring,我想使用@ControllerAdvice创建一个标准响应 @Override public boolean supports(MethodParameter returnType, Class<? extends HttpMessageConverter<?>> converterType) { List<Annotation> annotations = Arrays.asList(returnType.getMethodA
@Override
public boolean supports(MethodParameter returnType, Class<? extends HttpMessageConverter<?>> converterType) {
List<Annotation> annotations = Arrays.asList(returnType.getMethodAnnotations());
return annotations.stream().anyMatch(annotation -> annotation.annotationType().equals(JsonFilter.class));
}
我已经为设置状态代码和消息编写了自定义注释
@Override
public boolean supports(MethodParameter returnType, Class<? extends HttpMessageConverter<?>> converterType) {
List<Annotation> annotations = Arrays.asList(returnType.getMethodAnnotations());
return annotations.stream().anyMatch(annotation -> annotation.annotationType().equals(JsonFilter.class));
}
我正在处理类演员异常
@Override
public Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType, Class<? extends HttpMessageConverter<?>> selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) {
JsonFilter annotation = returnType.getMethodAnnotation(JsonFilter.class);
String statusCode = annotation.status();
String message = annotation.message();
ResponseHeader<Object> responseHeader = new ResponseHeader(statusCode,message,body);
System.out.println(responseHeader);
return responseHeader;
}
@Override
public boolean supports(MethodParameter returnType, Class<? extends HttpMessageConverter<?>> converterType) {
List<Annotation> annotations = Arrays.asList(returnType.getMethodAnnotations());
return annotations.stream().anyMatch(annotation -> annotation.annotationType().equals(JsonFilter.class));
}
需要重写supports方法
@Override
public boolean supports(MethodParameter returnType, Class<? extends HttpMessageConverter<?>> converterType) {
List<Annotation> annotations = Arrays.asList(returnType.getMethodAnnotations());
return annotations.stream().anyMatch(annotation -> annotation.annotationType().equals(JsonFilter.class));
}
@覆盖
公共布尔支持(MethodParameter returnType,Class>converterType){
列表注释=Arrays.asList(returnType.getMethodAnnotations());
返回annotations.stream().anyMatch(annotation->annotation.annotationType().equals(JsonFilter.class));
}
如果您使用的是低于8的java版本,请在supports方法中将ResponseBody.class更改为JsonFilter.class。