ResponseAdvice не срабатывает - PullRequest
0 голосов
/ 16 октября 2019

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

1 Ответ

0 голосов
/ 16 октября 2019

Хорошо. ОшибкаМетод support должен возвращать true . Так что настройте свою логику в соответствии с вашими требованиями.

...