Spring for Android 1.0.0发布
jopen 12年前
<p> 近日,<a href="/misc/goto?guid=4958347090214024297">Spring for Android 1.0.0 GA 版</a>发布了,Spring for Android 支持在 Android 环境下使用 Spring Framework。此次 GA 版发布包含了自 RC1 以来的一些小修复与改进。</p> <p> 如上所述,Spring for Android 项目支持在 Android 环境下使用 Spring Framework,这包括在 Android 应用中使用 RestTemplate 作为 REST 客户端的能力。Spring for Android 还提供了将 Spring Social 功能集成到 Android 应用中的支持,其中包括健壮的、基于 OAuth 的授权客户端与对诸如 推ter 与 非死book 等流行社交网站的实现。</p> <p> 此次发布的一个重要变化是默认的 RestTemplate 构造方法不再包含任何的消息体转换器了。然而,你可以使用另一个构造方法包含一个标准的消息转换器集合,这类似于之前发布的版本。感兴趣的读者可以参考 API 文档与参考手册来了解关于这个变化的更多细节信息。</p> <p> Spring 的 RestTemplate 是个健壮的、流行的、基于 Java 的 REST 客户端。Spring for Android RestTemplate Module 提供的 RestTemplate 版本能够用于 Android 环境中。</p> <p> RestTemplate 类是 Spring for Android RestTemplate 库的核心。从概念上来说,它类似于其他 Spring 项目中的模板类。RestTemplate 的行为是通过提供回调方法并配置 HttpMessageConverter(用于将对象编排为 HTTP 请求体以及将响应反编排为对象)来定制的。在创建新的 RestTemplate 实例时,构造方法会创建出几个支持对象来实现 RestTemplate 的功能。</p> <p> RestTemplate 支持如下功能:</p> <p> <strong><strong>HTTP 客户端</strong></strong></p> <p> RestTemplate 为 RESTful HTTP 请求提供了一层抽象,在内部,RestTemplate 使用了一个原生的 Android HTTP 客户端库来处理这些请求。Android 上有两个原生 HTTP 客户端,一个是标准的 J2SE 工具,另一个是 <a href="/misc/goto?guid=4958347091021080031">HttpComponents HttpClient</a>。标准的 J2SE 工具是通过 SimpleClientHttpRequestFactory 实现的,HttpClient 是通过 HttpComponentsClientHttpRequestFactory 实现的。在创建新的 RestTemplate 实例时所使用的默认 ClientHttpRequestFactory 会根据应用所运行的 Android 版本的不同而不同。</p> <p> Google 推荐在 <a href="/misc/goto?guid=4958347091814121082">Gingerbread(Android 2.3)</a>及之后的版本上使用 J2SE 工具,而之前的版本则应该使用 HttpComponents HttpClient。基于该建议,RestTemplate 会检测应用运行的 Android 版本并使用恰当的 ClientHttpRequestFactory。要想使用具体的 ClientHttpRequestFactory,你需要向 RestTemplate 构造方法传递一个新实例,或是对已有的 RestTemplate 实例调用 setRequestFactory (ClientHttpRequestFactory requestFactory)方法。</p> <p> <strong><strong>Gzip 压缩</strong></strong></p> <p> RestTemplate 支持发送与接收通过 gzip 压缩编码的数据。HTTP 规范考虑到了 Accept-Encoding 头中的附加值,但目前的 RestTemplate 只支持 gzip 压缩。</p> <p> <strong><strong>对象到 JSON 的编排</strong></strong></p> <p> 在 Spring for Android RestTemplate 中,对象到 JSON 的编排需要使用第三方的 JSON 映射库。Spring for Android 支持两个库,一个是 <a href="/misc/goto?guid=4958196139305919039">Jackson JSON Processor</a>,另一个是 <a href="/misc/goto?guid=4958193114092262929">Google Gson</a>。虽然 Jackson 是个众所周知的 JSON 解析库,但 Gson 库却更小,这样在打包时 Android 应用的体积就会更小。</p> <p> <strong><strong>对象到 XML 的编排</strong></strong></p> <p> 在 Spring for Android RestTemplate 中,对象到 XML 的编排也需要使用第三方的 XML 映射库。<a href="/misc/goto?guid=4958347094079991233">Simple XML serializer</a> 用于提供该编排功能。</p> <p> <strong><strong>RSS 与 Atom 支持</strong></strong></p> <p> 在 Spring for Android RestTemplate 中,RSS 与 Atom feed 支持也需要使用第三方的 feed reader 库。<a href="/misc/goto?guid=4958347094876751120">Android ROME Feed Reader</a> 用于提供该功能。</p> <p> 此次发布所要求的最低 Android 版本为 Android 2.1(API Level 7),并未对 Android 的早期版本进行测试。</p> <p> 此次发布的改进有:</p> <ul> <li>增加了一个不包含任何消息转换器的 RestTemplate 构造方法。</li> <li>合并了自 Spring Framework 3.1.1 以来 RestTemplate 的一些变化。</li> <li>可以在 StringHttpMessageConverter 中指定默认字符集以及可用字符集列表。</li> <li>改进了 Android 版本检测。</li> <li>从 RestGatewaySupport 中移除了对 Commons Logging 的未使用的引用。</li> </ul> <p> 此次发布的 Bug 修复有:</p> <ul> <li>HttpUrlConnection 对 401 未授权响应会抛出 IOException,但并未被 RestTemplate 正确处理。</li> <li>UriUtils 没有恰当地对 URL 进行编码。</li> <li>HttpBasicAuthentication 使用了不受支持的 Base64 库。</li> </ul> <p> 若想获得此次发布,请<a href="/misc/goto?guid=4958342344030817696">下载</a>发布包,或是将 <a href="/misc/goto?guid=4958347096411669146">maven artifacts</a> 添加到项目中。示例应用位于 <a href="/misc/goto?guid=4958342344832509306">github.com/SpringSource/spring-android-samples</a> 上。</p> <div id="come_from"> 来自: <a id="link_source2" href="/misc/goto?guid=4958347097942884382" target="_blank">InfoQ</a> </div>