【发布时间】:2017-01-17 08:51:38
【问题描述】:
我声明了一个实现RequestBodyAdvice 的@ControllerAdvice。我的问题是它没有被触发。我在同一个包中有一个ResponseBodyAdvice,它按预期工作。
@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;
}
}
我进行了调试,发现这个@ControllerAdvice 可以在ControllerAdviceBean.findAnnotatedBeans() 中找到。但是为什么它没有触发我到目前为止还没有找到。
我猜其他人也有类似的问题。 请参阅How to use RequestBodyAdvice 和Spring RequestBodyAdvice is not picking up by the mock MVC frame work, how ever it is working for ResponseBodyAdvice。
【问题讨论】:
-
嗨。你有没有想过这个?我也有类似的问题。
-
很遗憾没有。如果你弄明白了,请告诉我。
-
我实际上是在尝试加载 JsonViewRequestBodyAdvice 实现,如果 Jackson 在类路径上,我发现它会自动添加。但是,在发现这一点时,我确实找到了一种解决方案。见下文。
-
只有在您发送帖子请求时才会触发此建议
标签: spring-mvc