Ich habe eine @ControllerAdvice
deklariert, die RequestBodyAdvice
implementiert. Mein Problem, dass es nicht ausgelöst wird. Ich habe eine ResponseBodyAdvice
in dem gleichen Paket, das wie erwartet funktioniert.Spring RequestBodyAdvice wird nicht ausgelöst
@RestControllerAdvice
public class RestPreProcessingAdvice implements RequestBodyAdvice {
@Override
public boolean supports(final MethodParameter methodParameter, final Type targetType,
final Class<? extends HttpMessageConverter<?>> converterType) {
return checkIfElegiable(...);
}
@Override
public Object handleEmptyBody(final Object body, final HttpInputMessage inputMessage, final MethodParameter parameter,
final Type targetType, final Class<? extends HttpMessageConverter<?>> converterType) {
return body;
}
@Override
public HttpInputMessage beforeBodyRead(final HttpInputMessage inputMessage, final MethodParameter parameter,
final Type targetType, final Class<? extends HttpMessageConverter<?>> converterType) throws IOException {
return doSomeProcessing(...);
}
@Override
public Object afterBodyRead(final Object body, final HttpInputMessage inputMessage, final MethodParameter parameter,
final Type targetType, final Class<? extends HttpMessageConverter<?>> converterType) {
return body;
}
}
ich gedebuggt und sehe, dass diese @ControllerAdvice
in ControllerAdviceBean.findAnnotatedBeans()
gefunden wird. Aber warum es nicht ausgelöst wurde, konnte ich bisher nicht herausfinden.
Ich denke, einige andere Leute haben ähnliche Probleme. Siehe How to use RequestBodyAdvice und Spring RequestBodyAdvice is not picking up by the mock MVC frame work, how ever it is working for ResponseBodyAdvice.
Hallo. Hast du das jemals herausgefunden? Ich habe ein ähnliches Problem. – user2294382
Leider nicht. Halten Sie mich auf dem Laufenden, wenn Sie es herausfinden. – user871611
Ich habe tatsächlich versucht, die JsonViewRequestBodyAdvice-Implementierung zu laden, die ich herausfand, wird automatisch hinzugefügt, wenn Jackson auf dem Klassenpfad ist. Aber als ich das herausgefunden habe, fand ich eine Lösung. Siehe unten. – user2294382