发布于 2016-01-29 15:04:56 | 273 次阅读 | 评论: 0 | 来源: 分享

这里有新鲜出炉的精品教程,程序狗速度看过来!

Spring Boot

Spring Boot 项目旨在简化创建产品级的 Spring 应用和服务。你可通过它来选择不同的 Spring 平台。可创建独立的 Java 应用和 Web 应用,同时提供了命令行工具来允许 'spring scripts'.


在构建RESTful数据服务过程中,我们定义了controller、repositories,并用一些注解修饰它们,但是到现在为止我们还没执行过对象的转换——将java实体对象转换成HTTP的数据输出流。Spring Boot底层通过 HttpMessageConverters 依靠 Jackson 库将 Java 实体类输出为JSON格式。当有多个转换器可用时,根据消息对象类型和需要的内容类型选择最适合的转换器使用。

SpringMVC源码剖析(五)-消息转换器HttpMessageConverter一文中,有一张图可以很清楚得表示消息转换器的位置。

消息转换器的位置

消息转换器的目标是:HTTP输入请求格式向Java对象的转换;Java对象向HTTP输出请求的转换。有的消息转换器只支持多个数据类型,有的只支持多个输出格式,还有的两者兼备。例如:MappingJackson2HttpMessageConverter可以将Java对象转换为application/json,而ProtobufHttpMessageConverter仅支持com.google.protobuf.Message类型的输入,但是可以输出application/json、application/xml、text/plain和application/x-protobuf这么多格式。

How Do

在项目中有三种办法配置消息转换器,主要区别是可定制性易用度的衡量。

  1. 在WebConfiguration类中加入@Bean定义
    @Beanpublic ByteArrayHttpMessageConverter byteArrayHttpMessageConverter() {
     return new ByteArrayHttpMessageConverter();
    }
  2. 重写(override)configureMessageConverters方法,扩展现有的消息转换器链表;
    @Overridepublic 
    void configureMessageConverters(List> converters) {
     converters.add(new ByteArrayHttpMessageConverter());
    }
  3. 更多的控制,可以重写extendMessageConverters方法,首先清空转换器列表,再加入自定义的转换器。
    @Overridepublic 
    void extendMessageConverters(List> converters) {
     converters.clear();
     converters.add(new ByteArrayHttpMessageConverter());
    }

分析

Spring提供了多种方法完成同样的任务,选择哪个取决于我们更侧重便捷性还是更侧重可定制性。

上述提到的三种方法各有什么不同呢?

通过@Bean定义HttpMessageConverter是向项目中添加消息转换器最简便的办法,这类似于之前提到的添加Servlet Filters。如果Spring扫描到HttpMessageConverter类型的bean,就会将它自动添加到调用链中。推荐让项目中的WebConfiguration继承自WebMvcConfigurerAdapter。

通过重写configureMessageConverters方法添加自定义的转换器很方便,但有一个弱点:如果项目中存在多个WebMvcConfigurers的实例(我们自己定义的,或者Spring Boot默认提供的),不能确保重写后的configureMessageConverters方法按照固定顺序执行。

如果需要更精细的控制:清除其他消息转换器或者清楚重复的转换器,可以通过重写extendMessageConverters完成,仍然有这种可能:别的WebMvcConfigurer实例也可以重写这个方法,但是这种几率非常小。



历史版本 :
Spring Boot 工具 Spring Cloud Skipper 1.0 RC1 发布
Spring Boot 开发的后台管理系统 icec 正式发布 1.0 版本
Spring Boot企业级开发基础框架 SLife 加入 Activiti 模块
Spring Boot 2.0.0.M7 发布,配置更改
Spring Boot 1.5.9 发布,Spring 应用快速构建框架
Spring Boot 1.5.8 发布,简化创建产品级 Spring 应用
Spring Boot 2.0.0.M5 发布,离正式版又近一步
Spring Boot 2.0.0 M4 发布,离正式版又近一步
Spring Boot 1.5.7 发布,包含多处修复和改进
Spring Boot 1.5.6 发布,微服务入门级微框架
Spring Boot 2.0.0.M3 发布,,微服务的入门级微框架
Spring Boot 1.5.5 发布,微服务入门级微框架
最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务