Spring 本周回顾:2011年3月29日

工程 | Josh Long | 2011年3月30日 | ...

嗯,那真是很棒的一周!社区和 SpringSource 本身都涌现出了许多精彩内容。

本周我再次意识到,如果知道去哪里找,Spring Framework 通常都能提供极大的帮助来简化或缓解手头的挑战。通常,我会查看 SpringSource 论坛JIRA 实例,如果我确信论坛或 JIRA 中还没有解决或考虑到相关问题,我就会去 StackOverflow 的 Spring 分类查找。SpringSource 的工程师也会尝试监控论坛,并且不那么频繁地监控 StackOverflow 论坛。此外,我喜欢边做边学——这就像是“一寸一寸地前进,艰难地前进…

抢先体验:适用于 Eclipse Indigo (3.7) 的 SpringSource Tool Suite

工程 | Martin Lippert | 2011年3月25日 | ...

Eclipse Indigo (3.7) M6a 包已于几天前开放下载,现在是我们允许您在该里程碑版本之上使用 SpringSource Tool Suite (STS) 的时候了。:-)

这只是 STS 的一个抢先体验版本,但我们设法为 Eclipse 3.7 集齐了所有组件:适用于 Eclipse 3.7 的 AJDT 版本、可在 3.7 上运行的 Groovy-Eclipse 版本,当然还有 SpringSource Tool Suite 本身,其中包含 Spring IDE、Grails 工具以及您从 STS 中了解到的所有其他优秀功能——所有这些现在都可以在最新的 Eclipse Indigo 里程碑版本之上运行了。

如何安装

如果您想手动添加某些内容,STS 的所有必要依赖项都可从复合更新站点获取:http://dist.springsource.com/snapshot/TOOLS/composite/e3.7

我们还在 STS 安装说明 的“从夜间快照更新站点安装”部分中包含了 3.7 的安装说明…

Spring 本周回顾:2011年3月22日

工程 | Josh Long | 2011年3月23日 | ...

又是一个很棒的一周——内容类型新颖(而且有趣!),而且确实也有新的内容来源!尽情享受吧!

  1. SpringSource 推出了全新的 SpringSource YouTube 频道。该频道提供有关 SpringSource 技术的精彩技术内容,应是您获取新内容以及首次观看时可能错过的内容的首选目的地。立即查看吧!就个人而言,我发现这个频道在大屏幕电视(支持浏览器或 YouTube,例如 Google TV/Apple TV/slingbox 等)或外接屏幕(如第二台笔记本电脑或第二显示器)上观看效果很棒。您也可以在上下班通勤途中,在车里使用 iPhone 等便携设备收听。
  2. …说到 YouTube 频道,上周网络研讨会(Spring 和 STS 入门)的内容和幻灯片已提供给错过的朋友们。Spring Framework 的负责人 Juergen Hoeller 几周前在一个直播网络研讨会中介绍了令人兴奋的下一代 Spring Framework (3.1),该内容已上传到 SpringSource YouTube 频道
  3. Martin Lippert 宣布了最新版本的 SpringSource Tool Suite,版本号为 2.6.0。新版本功能丰富,并追踪了多个项目的最新版本(Spring Roo 1.1.2、Eclipse Helios SR2、Groovy 1.7.8、Grails 1.3.7)。它包含了对 Spring Roo 和 Groovy on Grails 的更新支持和性能改进,提供了 Spring Web Flow 的图形编辑器,以及对 Spring 注解(@Autowired, @Qualifier, @RequestMapping 等)的内容辅助、快速修复和重构的新支持。
  4. Ramnivas LaddadSpring 本周回顾 指出了这个非常创新的 Chrome 浏览器插件。使用方法是,在全能框(搜索/地址栏)中输入“spring”,接着输入一个空格,然后输入您要搜索的类名。它会自动显示链接到文档的候选结果!非常棒,也很方便!(注意:我们在刚发布的 Chrome 10 上测试了此插件,尽管它无疑至少兼容 Chrome 9。)

  5. InfoQ 上有 Mark Pollack 和 Chris Richardson 在去年芝加哥举行的 SpringOne2GX 活动上对 Spring Data 进行的 精彩 介绍视频。Spring Data 是利用这些新的、强大的数据存储选项(有时称为“NoSQL”存储)的绝佳方式,它提供了 Spring 用户熟悉且符合习惯的用法。不妨看看!
  6. 支持 Neo4j 的 Spring Data 项目的最新版本 已发布。新版本包含了许多新功能,并与 Neo4j 本身追踪到最新版本。Neo4j 是当今开发者可用的众多新型专用数据存储之一。Neo4j 将数据建模为关系和节点。它针对快速节点遍历进行了优化,例如 Facebook 好友关系图。
    此外,SpringSource 将于 4 月 20 日举办一场关于 Spring Data(特别是包含 Neo4j 支持的 Spring Data Graph 子项目)的网络研讨会。该演示文稿将为 北美欧洲 地区同时进行。立即注册吧!
  7. Spring Framework 可帮助您构建最出色的应用程序。Spring Social 在此基础上更进一步,让您的应用程序能够与用户集成。JTeam 团队再次发力,这次带来了一篇关于 Spring Social 的有趣最新文章,附带源代码和示例应用程序。不妨看看!
  8. Spring MVC 支持多种不同类型的视图,包括 RESTful 载荷、Velocity 模板、JSP 和基于 Tiles 的视图。这篇博客文章解释了如何将 Spring MVC 与 Tiles 集成
  9. Chariot Solutions 的 Ken Rimple 录制了一个截屏视频,介绍了 SpringSource 家族的最新成员 Wavemaker
  10. 现在使用 Spring Framework 的人比以往任何时候都多,这种增长带来的结果是各种工具对 Spring 的支持更新、更专业。一家 UML 工具制造商——Architexa——在其基于 Eclipse 的产品中,讲述了他们对 Spring Framework 的增强支持。请查看这篇博客了解更多。
  11. Ashish Jain 对 Spring 3.1 的新缓存支持提出了一个有趣的观点。

    Ashish 选择简化他的软件栈(通过移除 Hibernate,转而使用 Spring Framework 的 JdbcTemplate 直接进行 JDBC 操作,这是一种…

Spring 本周回顾:2011年3月15日

工程 | Adam Fitzgerald | 2011年3月16日 | ...

又是一个盛产优质深度内容的一周。本周列表上的大部分内容最适合一边品尝一杯香浓的咖啡,一边坐在舒适的椅子上细细品味。:-) 尽情享受吧!

  1. 本周四,SpringSource 将举办一场免费网络研讨会—— Spring 和 SpringSource Tool Suite 入门 。本次演示将为经验丰富的人士介绍一些新方法,并为这项技术的新手提供入门机会,以便快速投入高效的应用程序开发。此外,与会者还有机会向演示者和嘉宾提问。该网络研讨会将举办两次,一次面向 欧洲,一次面向 北美。希望能在那里见到您!
  2. Spring MVC 负责人 Keith Donald 在 SpringOne2GX 上介绍 Spring MVC 3 的视频 已发布到 InfoQ.com 上。这段精彩的视频在短短 90 分钟内包含了大量信息。不妨看看!
  3. Craig Walls 本周发表了一篇关于 扩展 Spring Social 的服务提供者框架 的文章,这次他介绍了与 Netflix API 集成的示例。这是一篇信息量非常大的文章,而且极具启发性——阅读时,我情不自禁地冒出了许多令人兴奋的应用程序创意。
    </li>
    
  4. 这篇 VMware 白皮书 很好地介绍了如何从 Java EE 应用服务器迁移到更精简、更强大的 SpringSource tcServer。内容引人入胜,并突出了一些非常有趣的信息。不妨看看!
  5. 	<li>The whitepaper exploring a migration from a Java EE application to tcServer has a companion <a href="http://java.sys-con.com/node/1750240">in this VMware</a> whitepaper,  that talks about the migration from Tomcat to tcServer. Pretty exciting!
    
  6. 这篇博客文章介绍了高吞吐量、异步的 Servlet 3.0 应用程序。对于使用 Tomcat 或 tcServer 的用户来说,这篇文章尤其有用,因为它们是目前 Servlet 3.0 兼容安装基数最大的平台。

扩展 Spring Social 的服务提供者框架

工程 | Craig Walls | 2011年3月10日 | ...

上周,我向您介绍了 Spring Social 的服务提供者“连接”框架,并展示了它如何简化用户本地应用程序账户与软件即服务 (SaaS) 提供商账户之间的连接创建。今天,我想向您展示如何扩展该服务提供者框架,以处理与 Spring Social 不直接支持的提供商的连接。

为 Netflix 扩展 Spring Social

假设您正在开发一个电影评论网站,用户可以在其中阅读和发布简短的电影评论。通常,电影评论会按最新发布顺序显示在主页上。但是,如果用户将其账户与 Netflix 账户连接,您就可以向他们显示其 Netflix 光盘队列中的电影评论。要实现这一点,您希望利用 Spring Social 的服务提供者框架来连接用户账户与他们的 Netflix 账户。Spring Social 1.0.0.M2 不包含 Netflix 服务提供者或 API 绑定,但可以轻松扩展以支持不直接支持的提供商。

在本文中,我将向您展示如何基于 Spring Social 的服务提供者框架构建,以实现与 Netflix 的连接。我们将首先开发一个 Netflix 服务提供者实现,然后构建一个简单的 API 绑定来满足我们应用程序的需求。开发 Netflix 服务提供者所使用的技术可以应用于扩展 Spring Social 以支持几乎所有服务提供商。您可以通过查阅 GitHub 上的示例代码 来跟着操作。

了解 Netflix 的授权 API

在我们开始开发 Netflix 服务提供者实现之前,我们需要做一些前期研究,了解 Netflix 授权 API 如何工作的一些基本细节。

我们需要确定的第一件事是 Netflix 使用什么授权协议。Netflix API 文档的 认证概览 部分告诉我们他们使用 OAuth,但没有明确说明使用的是 OAuth 规范的哪个版本。因此,需要做一些侦探工作。

在该页下方(在“那些烦人的 OAuth 参数”标题下),我们看到了对 consumer keys、nonces 和 timestamps 的提及。这些内容不适用于 OAuth 2,所以 Netflix 肯定是一个 OAuth 1 提供商。此外,描述中 oauth_version 参数被设置为“1.0”进一步证实了 Netflix 实现了 OAuth 1。

现在我们知道 Netflix 使用 OAuth 1。但同样重要的是要知道他们实现的是规范的 1.0 版本还是 1.0a 版本。服务提供商通常不会在文档中明确说明这一点,而且在任何情况下 oauth_version 的值都应该是“1.0”。然而,有一些明显的迹象可以指出 OAuth 规范的特定版本。这里有一些线索表明使用的是 OAuth 1.0:

  • oauth_callback 参数发送在授权 URL 上,而不是请求 token 请求中。
  • 没有验证器(verifiers)的概念,也无需将 oauth_verifier 参数发送到访问 token URL。

对于 OAuth 1.0a,注意以下迹象:

  • oauth_callback 参数发送在请求 token 请求中,而不是授权 URL 中。
  • 在回调中从提供商处接收到验证器(verifier),并且必须将 oauth_verifier 参数发送到访问 token URL。

根据 Netflix 文档中的这些线索,我们确定 Netflix 使用的是 OAuth 1.0(而不是 1.0a)。这一信息非常重要,在我们定义服务提供者实现时会很有用。

最后,我们需要知道请求 token、授权和访问 token 的 URL 是什么。在该页下方(在“发起受保护调用”标题下),您会找到详细信息,告诉我们所需的 URL 如下:

  • 请求 Token URL: http://api.netflix.com/oauth/request_token
  • 授权 URL: https://api-user.netflix.com/oauth/login
  • 访问 Token URL: http://api.netflix.com/oauth/access_token

特别注意请求 token 和访问 token URL 中使用的协议。大多数提供商在这方面都很灵活,建议使用 https。然而,根据我与 Netflix 的经验,我发现如果您通过 https 请求 request 或 access token,Netflix 会抱怨请求签名无效。不过,授权 URL 通过 https 运行良好。

开发 Netflix 服务提供者实现

要创建一个新的服务提供者实现,我们需要继承 AbstractOAuth1ServiceProviderAbstractOAuth2ServiceProvider。这两类分别提供了 OAuth 1.0/1.0a 和 OAuth 2 的 OAuth 版本特定基础功能。由于 Netflix 是一个 OAuth 1.0 提供商,我们的 NetFlixServiceProvider 需要继承 AbstractOAuth1ServiceProvider


package org.springframework.social.movies.netflix;
import org.springframework.social.connect.oauth1.AbstractOAuth1ServiceProvider;
import org.springframework.social.connect.support.ConnectionRepository;
import org.springframework.social.oauth1.OAuth1Template;

public final class NetFlixServiceProvider extends AbstractOAuth1ServiceProvider<NetFlixApi> {

    public NetFlixServiceProvider(String consumerKey, String consumerSecret, ConnectionRepository connectionRepository) {
        super("netflix", connectionRepository, consumerKey, consumerSecret, 
            new OAuth…

Spring 本周回顾:2011年3月8日

工程 | Josh Long | 2011年3月9日 | ...

本周又迎来了一波令人兴奋的新版本和更新,精彩的社区内容,以及热烈欢迎 WaveMaker 加入 SpringSource 家族的激动人心公告。

  1. Rod Johnson 今天在 SpringSource 博客上 宣布了对 WaveMaker 的收购。WaveMaker 是一款广泛使用的图形化工具,使非专业开发者能够快速构建 Web 应用程序。文章中写道:“虽然 WaveMaker 已是 Spring 生态系统的一部分,但它现在将成为 Spring 家族和 VMware 云战略不可或缺的一部分。WaveMaker 的所有员工都将加入 VMware。”令人激动…

面向庞大新受众:VMware 收购 WaveMaker

工程 | Rod Johnson | 2011年3月8日 | ...

今天,VMware 通过此博客宣布收购 WaveMaker,这是一款广泛使用的图形化工具,使非专业开发者能够快速构建 Web 应用程序。 虽然 WaveMaker 已是 Spring 生态系统的一部分,但它现在将成为 Spring 家族和 VMware 云战略不可或缺的一部分。WaveMaker 的所有员工都将加入 VMware。

此次收购通过赋能更多开发者构建和运行能够与底层基础设施共享信息以最大化性能、质量的现代应用程序,进一步推进了 VMware 的 云应用平台 战略…

Spring 本周回顾:2011年3月1日

工程 | Josh Long | 2011年3月2日 | ...

本周又迎来了一波令人兴奋的新版本和更新,以及精彩的社区内容。

请系好安全带!

我们直接开始吧。

  1. Spring Roo 1.1.2 已发布。自上个月 1.1.1 版本发布以来,此新版本包含了 200 多项增强、新功能和修复。一些亮点包括工具可用性增强、持久性增强、GWT 和 Spring MVC 增强以及库升级。
  2. Martin Lippet 刚刚宣布了 SpringSource Tool Suite 的 2.5.2.SR1 和 2.6.0.M2 版本发布

    2.5.2.SR1 的“刷新”更新了对 Groovy 1.7.8、Grails 1.3.7 的支持,更新到 Eclipse Helios SR2 (3.2.6),并包含了刚发布的 Spring Roo 1.1.2。2.6.0.M2 里程碑版本还包括一个 Roo 插件管理器,对 @RequestMapping 的改进支持,以及 Groovy 和 Grails 工具的大量改进。

  3. Martin Lippet 还整理了关于一个经常被问到且刚刚得到解答的问题的信息:如何

    贡献自定义项目…

介绍 Spring Social 的服务提供者框架

工程 | Craig Walls | 2011年3月2日 | ...

在我的上一篇文章中,我向您介绍了 Spring Social 的 Java 绑定,用于连接 Twitter、Facebook、LinkedIn 和 TripIt 等流行的软件即服务 (SaaS) API。除了为常见的 API 操作提供简单、强类型的 Java 方法外,这些绑定还确保每个 HTTP 请求都包含授权您的应用程序代表用户调用 API 所需的凭据。

我的第一篇文章没有解决的问题是:我们如何管理代表用户调用服务 API 所需的凭据?我很高兴地说,我们现在已经有了这个问题的答案。

本周早些时候,我们宣布发布 Spring Social 项目的第二个里程碑版本。Spring Social 1.0.0.M2 中最重要的新功能是引入了服务提供者“连接”框架。今天,我想向您介绍这个框架,并向您展示如何使用它来管理与 SaaS 提供商的“连接”。

本文中的示例来自 Spring Social Showcase。要跟着操作,请克隆仓库并按照 README 构建和部署示例应用程序。

获取 Spring Social

随着 M2 版本的发布,Spring Social 已被拆分为几个模块:

  • spring-social-core - 服务提供者框架、OAuth 支持和核心类。
  • spring-social-web - 连接控制器和支持类型。
  • spring-social-facebook - 用于连接 Facebook 的服务提供者实现,并支持通过 Facebook 登录应用程序。
  • spring-social-twitter - 用于连接 Twitter 的服务提供者实现,并支持通过 Twitter 登录应用程序。
  • spring-social-linkedin - 用于连接 LinkedIn 的服务提供者实现。
  • spring-social-tripit - 用于连接 TripIt 的服务提供者实现。
  • spring-social-github - 用于连接 GitHub 的服务提供者实现。
  • spring-social-gowalla - 用于连接 Gowalla 的服务提供者实现。
  • spring-social-test - 支持测试服务提供者实现和 API 绑定。

根据您的需求,您不一定需要所有这些模块。至少,您需要核心模块。您可以将以下条目添加到 Maven 构建的项目中:


<dependency>
    <groupId>org.springframework.social</groupId>
    <artifactId>spring-social-core</artifactId>
    <version>1.0.0.M2</version>
</dependency>

如果您的 Spring Social 将在 Web 应用程序中使用,您还需要 web 模块:


<dependency>
    <groupId>org.springframework.social</groupId>
    <artifactId>spring-social-web</artifactId>
    <version>1.0.0.M2</version>
</dependency>

然后,您需要添加一个或多个提供商模块。在我们的示例中,我们将讨论如何为应用程序添加 Twitter 连接功能,因此我们需要 twitter 模块:


<dependency>
    <groupId>org.springframework.social</groupId>
    <artifactId>spring-social-twitter</artifactId>
    <version>1.0.0.M2</version>
</dependency>

由于我们是基于 Spring Social 的里程碑版本构建,因此我们需要将 Spring 的里程碑仓库添加到 pom.xml 文件中:


<repository>
	<id>org.springframework.maven.milestone</id>
	<name>Spring Maven Milestone Repository</name…

Green Beans:Spring Integration 入门

工程 | Josh Long | 2011年2月24日 | ...

应用程序不是孤立存在的。它们需要与其客户以及其他应用程序进行通信。应用程序集成就是实现这种通信的关键。集成允许应用程序之间共享服务和数据,而且通常集成也帮助应用程序连接其用户。

Spring Integration 提供了一个构建集成解决方案的框架,以促进这类解决方案的实现。Spring Integration 解决方案描述了数据通过管道的流动过程。数据作为消息进入处理管道。消息通过…向前移动。

获取 Spring 资讯

订阅 Spring 资讯,保持联系

订阅

领先一步

VMware 提供培训和认证,助您飞速发展。

了解更多

获取支持

Tanzu Spring 通过一个简单的订阅,提供 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件。

了解更多

近期活动

查看 Spring 社区的所有近期活动。

查看全部