Java 类org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice 实例源码

项目:spring4-understanding    文件:WebMvcConfigurationSupport.java   
/**
 * A method available to subclasses for adding default {@link HandlerExceptionResolver}s.
 * <p>Adds the following exception resolvers:
 * <ul>
 * <li>{@link ExceptionHandlerExceptionResolver}
 * for handling exceptions through @{@link ExceptionHandler} methods.
 * <li>{@link ResponseStatusExceptionResolver}
 * for exceptions annotated with @{@link ResponseStatus}.
 * <li>{@link DefaultHandlerExceptionResolver}
 * for resolving known Spring exception types
 * </ul>
 */
protected final void addDefaultHandlerExceptionResolvers(List<HandlerExceptionResolver> exceptionResolvers) {
    ExceptionHandlerExceptionResolver exceptionHandlerExceptionResolver = new ExceptionHandlerExceptionResolver();
    exceptionHandlerExceptionResolver.setContentNegotiationManager(mvcContentNegotiationManager());
    exceptionHandlerExceptionResolver.setMessageConverters(getMessageConverters());
    if (jackson2Present) {
        List<ResponseBodyAdvice<?>> interceptors = new ArrayList<ResponseBodyAdvice<?>>();
        interceptors.add(new JsonViewResponseBodyAdvice());
        exceptionHandlerExceptionResolver.setResponseBodyAdvice(interceptors);
    }
    exceptionHandlerExceptionResolver.setApplicationContext(this.applicationContext);
    exceptionHandlerExceptionResolver.afterPropertiesSet();
    exceptionResolvers.add(exceptionHandlerExceptionResolver);

    ResponseStatusExceptionResolver responseStatusExceptionResolver = new ResponseStatusExceptionResolver();
    responseStatusExceptionResolver.setMessageSource(this.applicationContext);
    exceptionResolvers.add(responseStatusExceptionResolver);

    exceptionResolvers.add(new DefaultHandlerExceptionResolver());
}
项目:spring4-understanding    文件:WebMvcConfigurationSupport.java   
/**
 * Returns a {@link RequestMappingHandlerAdapter} for processing requests
 * through annotated controller methods. Consider overriding one of these
 * other more fine-grained methods:
 * <ul>
 * <li>{@link #addArgumentResolvers} for adding custom argument resolvers.
 * <li>{@link #addReturnValueHandlers} for adding custom return value handlers.
 * <li>{@link #configureMessageConverters} for adding custom message converters.
 * </ul>
 */
@Bean
public RequestMappingHandlerAdapter requestMappingHandlerAdapter() {
    List<HandlerMethodArgumentResolver> argumentResolvers = new ArrayList<HandlerMethodArgumentResolver>();
    addArgumentResolvers(argumentResolvers);

    List<HandlerMethodReturnValueHandler> returnValueHandlers = new ArrayList<HandlerMethodReturnValueHandler>();
    addReturnValueHandlers(returnValueHandlers);

    RequestMappingHandlerAdapter adapter = new RequestMappingHandlerAdapter();
    adapter.setContentNegotiationManager(mvcContentNegotiationManager());
    adapter.setMessageConverters(getMessageConverters());
    adapter.setWebBindingInitializer(getConfigurableWebBindingInitializer());
    adapter.setCustomArgumentResolvers(argumentResolvers);
    adapter.setCustomReturnValueHandlers(returnValueHandlers);

    if (jackson2Present) {
        List<RequestBodyAdvice> requestBodyAdvices = new ArrayList<RequestBodyAdvice>();
        requestBodyAdvices.add(new JsonViewRequestBodyAdvice());
        adapter.setRequestBodyAdvice(requestBodyAdvices);

        List<ResponseBodyAdvice<?>> responseBodyAdvices = new ArrayList<ResponseBodyAdvice<?>>();
        responseBodyAdvices.add(new JsonViewResponseBodyAdvice());
        adapter.setResponseBodyAdvice(responseBodyAdvices);
    }

    AsyncSupportConfigurer configurer = new AsyncSupportConfigurer();
    configureAsyncSupport(configurer);

    if (configurer.getTaskExecutor() != null) {
        adapter.setTaskExecutor(configurer.getTaskExecutor());
    }
    if (configurer.getTimeout() != null) {
        adapter.setAsyncRequestTimeout(configurer.getTimeout());
    }
    adapter.setCallableInterceptors(configurer.getCallableInterceptors());
    adapter.setDeferredResultInterceptors(configurer.getDeferredResultInterceptors());

    return adapter;
}
项目:spring4-understanding    文件:AnnotationDrivenBeanDefinitionParserTests.java   
@SuppressWarnings("unchecked")
private void verifyResponseBodyAdvice(Object bean) {
    assertNotNull(bean);
    Object value = new DirectFieldAccessor(bean).getPropertyValue("responseBodyAdvice");
    assertNotNull(value);
    assertTrue(value instanceof List);
    List<ResponseBodyAdvice> converters = (List<ResponseBodyAdvice>) value;
    assertTrue(converters.get(0) instanceof JsonViewResponseBodyAdvice);
}
项目:spring4-understanding    文件:AnnotationDrivenBeanDefinitionParserTests.java   
@SuppressWarnings("unchecked")
private void verifyRequestResponseBodyAdvice(Object bean) {
    assertNotNull(bean);
    Object value = new DirectFieldAccessor(bean).getPropertyValue("requestResponseBodyAdvice");
    assertNotNull(value);
    assertTrue(value instanceof List);
    List<ResponseBodyAdvice> converters = (List<ResponseBodyAdvice>) value;
    assertTrue(converters.get(0) instanceof JsonViewRequestBodyAdvice);
    assertTrue(converters.get(1) instanceof JsonViewResponseBodyAdvice);
}
项目:commelina    文件:WebMvcConfig.java   
@Bean
    public ResponseBodyAdvice<Object> converter() {
//        return new MappingJackson2HttpMessageConverter();
        return new JacksonResponseBodyJsonAdvice();
    }