美文网首页
深入解析 WebMvcConfigurerAdapter

深入解析 WebMvcConfigurerAdapter

作者: 楊小強 | 来源:发表于2017-06-01 23:41 被阅读581次

    深入解析 WebMvcConfigurerAdapter

    类说明:

    abstract class WebMvcConfigurerAdapter implements WebMvcConfigurer 该类是一个抽象类,实现了WebMvcConfigurer接口,用于定制 springMvc 的一些配置,该抽象类继承了 WebMvcConfigurer 接口的所有方法,但是都是一些空实现,是 springMvc 为定制配置提供的入口。

    方法说明

    • public void addArgumentResolvers( List < HandlerMethodArgumentResolver > argumentResolvers) 添加解析器以支持自定义控制器(controller)方法参数类型。这不会覆盖用于解析处理程序方法参数的内置支持。 要自定义内置的参数解析支持, 同样可以通过 RequestMappingHandlerAdapter 直接配置 RequestMappingHandlerAdapter 。空实现。

    使用示例: 添加一个自定义的参数解析对象

        @Override
        public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
            argumentResolvers.add(myHandlerMethodArgumentResolver);
        }
    
    • public void addReturnValueHandlers( List < HandlerMethodReturnValueHandler > returnValueHandlers) 添加处理程序来支持自定义控制器方法返回值类型。使用此选项不会覆盖处理返回值的内置支持。 要自定义处理返回值的内置支持,请直接配置RequestMappingHandlerAdapter。空实现。

    使用示例: springMvc 将返回值解析对象放到beanFactory中,实现返回值解析对象的注入

        @Override
        public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
    
            argumentResolvers.add(sortResolver());
            argumentResolvers.add(pageableResolver());
    
            ProxyingHandlerMethodArgumentResolver resolver = new ProxyingHandlerMethodArgumentResolver(
                    conversionService.getObject());
            resolver.setBeanFactory(context);
            resolver.setBeanClassLoader(context.getClassLoader());
    
            argumentResolvers.add(resolver);
        }
    
    • public void configureMessageConverters( List < HttpMessageConverter <?>> converter) 配置HttpMessageConverter用于读取或写入请求或响应的正文。 如果没有加入转换器,则会注册默认的转换器列表。

    【注意】新添加一个converter),会关闭原有的converter。要增加一个新的 converter 而不影响原有的,可以使用WebMvcConfigurer.extendMessageConverters(java.util.List)方法。
    使用示例:

    @Override
        public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
    
            argumentResolvers.add(sortResolver());
            argumentResolvers.add(pageableResolver());
    
            ProxyingHandlerMethodArgumentResolver resolver = new ProxyingHandlerMethodArgumentResolver(
                    conversionService.getObject());
            resolver.setBeanFactory(context);
            resolver.setBeanClassLoader(context.getClassLoader());
    
            argumentResolvers.add(resolver);
        }
    

    springboot是如何去使用这个抽象类的

    相关文章

      网友评论

          本文标题:深入解析 WebMvcConfigurerAdapter

          本文链接:https://www.haomeiwen.com/subject/rqjyfxtx.html