• spring 添加controller返回值绑定


    @EnableWebMvc
    @Configuration
    public class Config {
    
        @Autowired
        private RequestMappingHandlerAdapter handlerAdapter;
    
        @PostConstruct
        public void init() {
            List<HandlerMethodReturnValueHandler> handlers = new ArrayList<>(handlerAdapter.getReturnValueHandlers());
            List<HttpMessageConverter<?>> messageConverters = new ArrayList<>();
            messageConverters.add(new MappingJackson2HttpMessageConverter());
            handlers.add(0, new ResultResponseHandlerMethodProcessor(messageConverters));
            handlerAdapter.setReturnValueHandlers(handlers);
    
            handlerAdapter.getCustomReturnValueHandlers().add(0, new ResultResponseHandlerMethodProcessor(messageConverters));
    
            handlerAdapter.afterPropertiesSet();
        }
    
    }
    
    public class ResultResponseHandlerMethodProcessor extends RequestResponseBodyMethodProcessor {
    
        public ResultResponseHandlerMethodProcessor(List<HttpMessageConverter<?>> messageConverters) {
            super(messageConverters);
        }
    
        public ResultResponseHandlerMethodProcessor(List<HttpMessageConverter<?>> messageConverters, ContentNegotiationManager contentNegotiationManager) {
            super(messageConverters, contentNegotiationManager);
        }
    
        @Override
        public boolean supportsReturnType(final MethodParameter returnType) {
            return returnType.getParameterType() == ResponseResult.class;
        }
    
        @Override
        public void handleReturnValue(final Object returnValue, final MethodParameter returnType, final ModelAndViewContainer mavContainer, final NativeWebRequest webRequest) throws IOException, HttpMediaTypeNotAcceptableException {
            super.handleReturnValue(returnValue, returnType, mavContainer, webRequest);
        }
    
    }
    
    spring相关核心类:
    
    org.springframework.context.support.AbstractApplicationContext#finishBeanFactoryInitialization
    
    org.springframework.beans.factory.support.DefaultListableBeanFactory#preInstantiateSingletons
    
    org.springframework.context.support.AbstractApplicationContext#refresh
    
    mvcUriComponentsContributor
    
    spring bean容器
    org.springframework.context.annotation.CommonAnnotationBeanPostProcessor#injectionMetadataCache
    
    
    org.springframework.web.servlet.config.AnnotationDrivenBeanDefinitionParser.CompositeUriComponentsContributorFactoryBean
    

      

  • 相关阅读:
    python 连接 mysql
    apt-get报错could not get lock /var/lib/dpkg/lock -open等
    二叉树两个结点的最低共同父节点
    c++虚函数,纯虚函数,抽象类,覆盖,重载,隐藏
    class的继承,从基类开始
    Vue.js简单记录
    转:MVC,MVP 和 MVVM 的图示
    转:springmvc常用注解标签详解
    《一头扎进SpringMvc视频教程》
    《一头扎进SpringMvc视频教程》Rest风格的资源URL
  • 原文地址:https://www.cnblogs.com/ThinkVenus/p/9198058.html
Copyright © 2020-2023  润新知