如何将ResponseBodyAdvice实现到所有控制器?

Ult*_*ata 6 java model-view-controller spring response.addheader

我需要编辑我的HttpResponse以添加标头值.我正在寻找单点来实现它,并发现这ResponseBodyadvice将有所帮助.

但是我的新课程中的两种方法都没有被调用过.你能否告诉我是否错过了任何配置.

@ControllerAdvice
public class EditResponseHeader implements ResponseBodyAdvice<object> {


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

   return true;
}

....

@Override
public Object beforeBodyWrite(Object body, MethodParameter returnType,
        MediaType selectedContentType,
        Class<? extends HttpMessageConverter<?>> selectedConverterType,
        ServerHttpRequest request, ServerHttpResponse response) {

    ....

    return body;
}

}
Run Code Online (Sandbox Code Playgroud)

geo*_*van 1

关于什么 :

@Override
@ExceptionHandler(Exception.class)
public Response<?> beforeBodyWrite(Response<?> body, MethodParameter returnType,
                                   MediaType selectedContentType,
                                   Class<? extends HttpMessageConverter<?>> selectedConverterType,
                                   ServerHttpRequest request, ServerHttpResponse response) {

                ....

    return body;
}
Run Code Online (Sandbox Code Playgroud)

  • 当我编写任何用“@InitBinder”或“@ExceptionHandler”注释的方法时,它工作正常,但仅在引发异常时调用“@ExceptionHandler”,并且在执行控制器之前调用“@initBinder”。我的要求是在执行每个控制器后调用此方法,而不仅仅是在引发异常时调用此方法。 (3认同)