Много вопросов в SO, но почти нет рабочего решения.
Простая реализация ResponseAdvice с @ ControllerAdvice
Контроллер
@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 не срабатывает вообще. Приложение полностью управляется аннотациями. И совет, и контроллер находятся в одной упаковке. Чего мне не хватает!