Spring Data Graph 1.1.0.RC1 支持 Neo4j 发布

版本发布 | Thomas Risberg | 2011 年 7 月 26 日 | ...

亲爱的Spring社区,

我们很高兴地宣布,Spring Data Graph 项目(支持 Neo4j)的新发布候选版本(1.1.0.RC1)现已可用!

Spring Data 项目的主要目标是简化构建使用新型数据访问技术(如非关系型数据库、MapReduce 框架和基于云的数据服务)的 Spring 应用程序。

Graph Neo4j 模块提供了与 Neo4j 图数据库的集成。早在 2010 年,Rod Johnson 和 Emil Eifrem 就开始构思 Spring 和 Neo4j 的集成,包括透明持久化和…

本周 Spring:2011 年 7 月 26 日

工程 | Josh Long | 2011 年 7 月 26 日 | ...

欢迎回到“本周 Spring”的又一期!本周 @springsource 将参加在俄勒冈州波特兰举行的 OSCON(以及 OSCON Java 和 OSCON Data)大会。如果您在这里,请莅临我们在展厅的展位,或查看日程安排,了解众多 Spring 演讲!

如果您错过了 OSCON,或者只是想获得更好的 Spring 体验,请务必 注册参加 SpringOne 2GX 2011,这是 Spring、Grails 和 CloudFoundry 开发者的盛会。SpringOne 2GX 是一个独一无二的会议,面向开发业务应用程序、创建支持多设备感知 Web 应用程序、设计云架构以及管理高性能基础设施的应用程序开发者、解决方案架构师、Web 运营和 IT 团队。会议专门为使用非常受欢迎的开源 Spring 技术、Groovy & Grails 和 Tomcat 的开发者量身定制。无论您是构建和运行关键业务应用程序,还是设计下一个杀手级云应用程序,SpringOne 2GX 都将使您及时了解最新的企业技术。

  1. OSCON 很棒,但我将花一个小时观看网络研讨会《Spring Data Redis 入门》,分别面向 北美欧洲
    You should too: <a href="https://redis.ac.cn/">Redis</a> is an open source, advanced key-value store known for its excellent performance, its small footprint and embed-ability. <a href="http://www.springsource.org/spring-data/redis">The Spring Data</a> project makes it easier to build Spring-powered applications that use new data access technologies such as non-relational "NOSQL" databases and cloud based data services. Check it out!  </li>
    
  2. <a href= "http://www.springsource.org/node/3189">Spring Data Graph 1.1.0.RC1 with Neo4j support Released</a>
    The key changes in the Spring Data Graph 1.1.…

Spring Android 1.0.0.M4 发布

版本发布 | Roy Clarkson | 2011年7月21日 | ...

亲爱的Spring社区,

我们很高兴地宣布,Spring Android 项目的第四个里程碑版本现已发布!

Spring Android 支持在 Android 环境中使用 Spring Framework。1.0.0.M4 版本着重于更新对最新 Spring Social 版本在原生 Android 应用程序中的支持,以及增强 Rest Template。这包括:

  • 通过 Spring Android Auth 模块支持 Spring Social 1.0.0.RC1 和 Spring Security 3.1.0.RC2,该模块包含用于持久化 OAuth API 连接的 SQLite 数据存储。
  • 更新了 RestTemplate (客户端) 支持,现已达到 Spring Framework 3.1.0.M2 的水平。
  • 在 RestTemplate 中添加了 gzip 压缩支持
  • 添加了对 Google 的 Gson JSON 解析库的支持。Gson 库比 Jackson 小,但 Jackson 的性能更快。

Spring Android 支持 Android 2.1 (API Level 7) 及更高版本。

要获取软件,请 下载 发行版,或简单地将 Maven 构件 添加到您的项目中。要实时查看功能,请查看已更新至 1.0.0.M4 的 spring-android-showcase

除了 参考指南 外,Roy Clarkson 还撰写了两篇博客文章,帮助您开始开发 Android 应用程序:

如果您正在构建原生 Android 应用程序,我们邀请您在 Spring Android 项目上与我们 合作

Spring Data JPA 1.0 GA 发布

发布 | Oliver Drotbohm | 2011年7月21日 | ...

亲爱的Spring社区,

我们很高兴地宣布,Spring Data JPA 项目的第一个正式发布版本现已可用!感谢所有早期用户帮助塑造和巩固了代码库。为了方便您轻松上手,请随意浏览 示例代码 或阅读 参考文档

<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-jpa</artifactId>
    <version>1.0.0.RELEASE</version>
</dependency>

<repository>
    <id>org.springframework.maven.release</id>
    <name>Spring Maven Release Repository</name>
    <url>http://maven.springframework.org/release</url>
</repository>

该版本也将可在 Maven Central 中获得。

下载 | JavaDocs | 参考文档 (HTML) | 参考文档 (PDF) | 更新日志

期待您在 论坛问题跟踪器 中提供反馈。

本周 Spring:2011 年 7 月 19 日

工程 | Josh Long | 2011 年 7 月 20 日 | ...

欢迎回到“本周 Spring”的又一期。有很多好东西要介绍,让我们开始吧。

  1. Grails 推广大使 Peter Ledbrook 的网络研讨会“调整您的 Grails 应用程序”的视频已 在此提供。对 Web 开发者(尤其是 Grails 开发者)来说,有很多精彩的内容。请务必查看 SpringSource YouTube 频道上的其他精彩内容。
  2. OSCON 即将到来,SpringSource 将盛装出席!来听听本人(Josh Long)、Steve Mayzak、Ezra Zygmuntowicz、Derek Collison、Bruce Snyder、David McCrory、James Watters 等人在 OSCON(以及 OSCON Java 和 OSCON Data!)上谈论 Spring、CloudFoundry 等内容。此外,欢迎光临我们的展位,我们将很乐意回答您的问题,向您介绍新技术,并与您见面交流。您将前往吗?请告知我们,请在 Twitter 上给我们发送消息至 @SpringSource
  3. Spring Data Redis 1.0.0.M4 已发布。新版本包含多项改进。我最喜欢的是什么?一个使用 Redis 的 Spring 3.1 CacheManager 实现!开箱即用,Spring 3.1 的缓存抽象支持一个基于 java.util.Map<K,V> 接口的 CacheManager 实现,以及一个 Ehcache 实现。Spring Gemfire 项目附带一个委托给 GemFire 的 CacheManager 实现。这个新的 Redis 实现为已有的各种选项增添了更多选择,而 Spring 3.1 甚至还没有 GA(通用可用)!
  4. 说到 Redis,请关注即将举行的网络研讨会《Spring Data Redis 入门》。该研讨会的描述是:“本次网络研讨会将介绍 Redis、其数据结构、其基本概念以及 Spring Data 中的 Redis 支持,并将展示如何轻松入门并扩展到像 Cloud Foundry 这样的云环境中。”请务必收听!
  5. 		  <LI> 	<a href="http://www.springsource.org/node/3183">Spring Integration 2.0.5 has just been released.</a>
    				This release addresses 48 issues of which roughly half were bugs and half were improvements. For details <A href="https://jira.springsource.org/secure/ReleaseNote.jspa?projectId=10121&version=12104">see the Release Notes</a>.  </li> 
    <LI>Dr. David Syer, lead of the <a href="http://static.springsource.org/spring-batch/">Spring Batch project,</a> lead of the Spring Hadoop project, committer on just about everything else, and nice guy, all around, has just posted an amazingly clear…

Spring Data Graph 1.1.0.M2 支持 Neo4j 发布

版本发布 | Thomas Risberg | 2011 年 7 月 20 日 | ...

亲爱的Spring社区,

我们很高兴地宣布,Spring Data Graph 项目(支持 Neo4j)的新里程碑版本(1.1.0.M2)现已可用!

Spring Data 项目的主要目标是简化构建使用新型数据访问技术(如非关系型数据库、MapReduce 框架和基于云的数据服务)的 Spring 应用程序。

Graph Neo4j 模块提供了与 Neo4j 图数据库的集成。早在 2010 年,Rod Johnson 和 Emil Eifrem 就开始构思 Spring 和 Neo4j 的集成,包括透明持久化和…

Spring GemFire 1.1.0.M1 Java 版发布

发布 | Costin Leau | 2011 年 7 月 20 日 | ...

亲爱的Spring社区,

我们很高兴地宣布 Spring GemFire 1.1 项目的首个里程碑版本现已可用!Spring GemFire 项目旨在利用 GemFire 作为分布式数据管理平台,更轻松地构建支持 Spring 的高可扩展应用程序。

新的里程碑更新包括

  • 对即将推出的 GemFire 6.6 的原生支持
  • CacheServer 支持
  • GemFire 对 Spring 3.1 缓存抽象的实现
  • 支持带可变参数的查询

要了解更多关于该项目的信息,请访问 Spring GemFire 的 主页

立即下载Spring GemFire for Java | Spring GemFire for .NET

我们期待您的反馈!

社交编码:Pull Requests - 遇到复杂情况怎么办

工程 | Dave Syer | 2011年7月18日 | ...

场景:您想向托管在公共 Git 仓库服务(如 GitHub)上的开源项目贡献代码。我参与的许多项目都有很多人提交 pull request,但很多时候合并起来比预期的要复杂,这会稍微减慢过程。基本工作流程在概念上很简单:

  1. Fork 一个公共开源项目
  2. 在本地对其进行一些更改,并将它们推送到您自己的远程 Fork
  3. 请项目负责人将您的更改合并到主代码库

并且 Keith Donald 的博客 对这个基本工作流程有精彩的介绍。

当您 Fork 主代码库之后到发送 pull request 之间,主代码库发生了变化,或者(更糟糕的是)您想为不同的功能或 bug 修复发送多个 pull request,并且需要将它们分开,以便项目所有者能够单独处理,这时就会出现复杂情况。本教程旨在帮助您使用 Git 应对这些复杂情况。

这里的描述使用 GitHub 的领域语言(“pull request”、“fork”、“merge” 等),但相同的原则适用于其他公共 Git 服务。在本教程中,我们假设公共项目接受对其 master 分支的 pull request。大多数 Spring 项目都是这样工作的,但一些其他公共项目不是。您可以在下面的内容中用正确的 branch 名称替换“master”一词,相同的示例应该大致正确。

为了帮助您跟踪本地发生的情况,下面以“$”开头的 shell 命令可以提取到一个脚本中并按出现的顺序运行。终端应该是一个名为“work”的目录中的本地仓库,该仓库有一个指向其 master 分支的 origin(模拟远程公共项目)以及私有 Fork 上的两个分支。这两个分支的 HEAD 内容相同,但提交历史不同(如底部的 ASCII 图所示)。

两个远程仓库

如果您要发送 pull request,则涉及两个远程仓库:主公共项目和您推送更改的 Fork。

在某种程度上,这取决于个人喜好,但我喜欢做的是将主项目设置为我工作副本的远程“origin”,并将我的 Fork 用作第二个名为“fork”的远程。这使得跟踪主项目中的情况变得容易,因为我只需要:

# git fetch origin

这样就可以在本地获得所有更改。这也意味着,在执行我的常规 Git 工作流程时,我永远不会感到困惑:

# git checkout master
# git pull --rebase
... build, test, install etc ...

这总能让我与主项目保持同步。我可以通过在从 master 拉取后执行此操作来使我的 Fork 与主项目保持同步:

# git push fork

初始设置

让我们在一个沙盒中创建一个简单的“远程”仓库供您使用。我们不使用 Git 服务提供商,而是在文件系统本地进行(以 UN*X 命令为例)。

$ rm -rf repo fork work
$ git init repo
$ (cd repo; echo foo > foo; git add .; git commit -m "initial"; git checkout `git rev-parse HEAD`)

(上一次 checkout 的目的是将仓库置于分离 HEAD 状态,以便我们稍后可以从中进行推送。)从现在开始,请假装“repo”是公共 GitHub 项目(例如 git://github.com/SpringSource/repo.git)。

这个 clone 命令中的“fork”URL 类似于 [email protected]/myuserid/repo.git。现在我们来创建 Fork。这等同于 GitHub 在您请求 Fork 仓库时所做的操作。

$ git clone repo fork
$ (cd fork; git checkout `git rev-parse HEAD`)

最后,我们需要设置一个工作目录,在那里进行更改(请记住“repo”= git://github.com/SpringSource/repo.git)。

$ git clone repo work
$ cd work
$ git checkout origin/master

因为我们克隆了主公共仓库,所以它默认是远程“origin”。我们将添加一个新的远程,以便我们可以推送我们的更改。

$ git remote add fork ../fork
$ git fetch fork
$ git push fork

现在,本地仓库中有一个提交,在 gitk(或您喜欢的 Git 可视化工具)中看起来如下:

A (origin/master, fork/master, master)

在此图中,“A”是提交标签,括号中列出了与该提交关联的分支。

获取最新内容

您始终可以使用以下命令从主仓库获取最新内容:

# git checkout master
# git pull --rebase

并将其与 Fork 同步:

# git push fork

如果您以这种方式操作,尽可能使主仓库和您的 Fork 之间的 master 保持同步,并且从不在 master 分支上进行任何本地更改,您将永远不会对世界的现状感到困惑。此外,如果您要向同一个公共项目发送多个 pull request,如果将它们保留在自己的分支上(即不在 master 上),它们就不会相互重叠。

Pull Request

当您想开始处理 pull request 时,从完全更新的 master 分支开始(如上所示),然后创建一个新的本地分支:

$ git checkout -b mynewstuff

进行更改、测试等。

$ echo bar > bar
$ echo myfoo > foo
$ git add .
$ git commit -m "Added bar, edited foo"

并使用新的分支名称(而不是 master)将其推送到您的 Fork 仓库:

$ git push fork mynewstuff

如果没有对 origin 做出任何更改,您可以直接发送 pull request。

如果 Origin 发生变化怎么办?

在本教程中,我们通过以下方式模拟 origin 的更改:

$ cd ../repo
$ git checkout master
$ echo spam > spam; git add .; git commit -m "add spam"
$ git checkout `git rev-parse HEAD`
$ cd ../work

现在我们准备好应对这种变化了。首先,我们将本地 master 更新到最新:

$ git checkout master
$ git pull
$ git push fork

本地仓库现在看起来像这样:

A -- B (mynewstuff, fork/mynewstuff)
 \
  -- D (master, fork/master, origin/master)

请注意,您的新内容没有 origin/master 作为直接祖先(它在另一个分支上)。这使得项目所有者很难合并您的更改。您可以通过在本地完成部分工作,并在发送 pull request 之前将其推送到您的 Fork 来简化此过程。

重写您分支上的历史

如果您没有在您的分支上与任何人协作,那么变基(rebase)到远程仓库的最新更改并强制推送应该完全没问题:

# git checkout mynewstuff
# git rebase master

如果您的更改与远程仓库中发生的事情不兼容,变基可能会失败。您需要修复冲突并提交它们,然后再继续。这会增加您的工作难度,但会使远程项目所有者的工作变得轻松,因为 pull request 保证能够成功合并。

在重写历史时,也许您想将一些提交合并在一起,使补丁更易于阅读,例如:

# git rebase -i HEAD~2
...

无论如何(即使变基顺利进行),如果您已经推送到您的 Fork,您将需要强制推送下一次推送,因为它已经重写了历史(假设远程仓库已更改)。

# git push --force fork mynewstuff

本地仓库现在看起来像这样(B 提交实际上与上一个版本不完全相同,但差异在这里并不重要):

A -- D (master, fork/master, origin/master) -- B (mynewstuff, fork/mynewstuff)

您的新分支有一个直接祖先 origin/master,所以每个人都很高兴。然后,您就可以进入 GitHub UI,从您的分支对 repo:master 发送 pull request 了。

如果我想保留我的本地提交怎么办?

如果您以多个步骤提交了本地更改,也许您想保留所有细小的提交,同时仍将您的 pull request 作为单个提交呈现给远程仓库。这没关系,您可以为此创建一个新分支,然后从该分支发送 pull request。如果您确实与某人协作开发了您的功能分支,并且不想强制推送,这也是一个不错的选择。

首先,我们将新内容推送到 Fork 仓库,以便我们的协作者可以看到它(如果您想将更改保留在本地,则不需要此步骤):

$ git checkout mynewstuff
$ git push fork

然后,我们将创建一个新分支用于合并的 pull request:

$ git checkout master
$ git checkout -b mypullrequest
$ git merge --squash mynewstuff
$ git commit -m "comment for pull request"
$ git push fork mypullrequest

这是本地仓库:

A -- B (mynewstuff, fork/mynewstuff)
 \
  -- D (master, fork/master, origin/master) -- E (mypullrequest, fork/mypullrequest)

您可以使用这个分支,并且您的新分支有一个直接祖先 origin/master,因此合并将非常简单。

如果您没有在 mynewstuff 分支上协作,您甚至可以在此时将其删除。我经常这样做以保持我的 Fork 清洁:

# git branch -D mynewstuff
# git push fork :mynewstuff

这是本地仓库,与两个远程仓库完全同步:

A -- D (master, fork/master, origin/master) -- E (mypullrequest, fork/mypullrequest)

继续处理您的新内容

假设您的 pull request 被拒绝,并且项目所有者希望您进行一些更改,或者新的内容变得更有趣,您需要对其进行更多工作。

如果您上面没有删除它,您可以继续在您的精细分支上工作……

$ git checkout mynewstuff
$ echo yetmore > foo; git commit -am "yet more"
$ git push fork

然后,当您准备好时,将更改转移到 pull request 分支:

$ git rebase --onto mypullrequest master mynewstuff

我们想要的所有更改都已到位,但是分支指向了错误的提交。如下所示,mynewstuff 处于我希望 mypullrequest 所在的位置,并且远程 fork/mynewstuff 没有对应的本地分支。

A -- B -- C (fork/mynewstuff)
 \
  -- D (master, fork/master, origin/master) -- E (mypullrequest, fork/mypullrequest) -- F (mynewstuff)

我们可以使用 git reset 来将两个分支切换到我们想要的位置(如果您愿意,您也可以在图形界面中执行此操作)。

$ git checkout mypullrequest
$ git reset --hard mynewstuff
$ git checkout mynewstuff
$ git reset --hard fork/mynewstuff

新的仓库看起来像这样:

A -- B -- C (mynewstuff, fork/mynewstuff)
 \
  -- D (master, fork/master, origin/master) -- E (fork/mypullrequest) -- F (mypullrequest)

如果我们对 pull request 包含 2 个提交感到满意,我们可以直接推送它:

$ git checkout mypullrequest
$ git push fork

终端看起来像这样:

A -- B -- C(mynewstuff, fork/mynewstuff)
 \
  -- D (master, fork/master, origin/master) -- E -- F (mypullrequest, fork/mypullrequest)

或者,我们可以变基(rebase)它以合并提交,并强制推送,示意图如下:

# git rebase -i HEAD~2
...
# git push --force fork

因为 origin/masterfork/mypullrequest 的直接祖先,所以我知道我的 pull request 将会非常容易合并。

总结

希望本教程能为您提供足够的 Git 工具,以便您可以对您最喜欢的开源项目进行一些更改,并确信合并将很简单。请记住,总有不止一种方法可以做到这一点,而 Git 是一个强大、底层的工具,所以您的体验可能会有所不同,您可能会发现上述方法的一些变体更可取,甚至在某些情况下是必需的,这取决于您的更改。

Spring Data Redis 1.0.0.M4 发布

发布 | Costin Leau | 2011年7月18日 | ...

亲爱的Spring社区,

我很高兴地宣布 Spring Data Redis 1.0 项目的第四个里程碑版本现已发布!

下载 | JavaDocs | 参考文档 | 变更日志

此版本引入了几个新功能,例如:

  • Spring 3.1 Redis 缓存实现
  • 简化的发布/订阅命名空间

此外,随着此版本的发布,Spring Data Key Value 项目已拆分为 Spring Data Redis 和 Spring Data Riak。

有关 Redis 和 Spring Redis 的更多信息,请参加即将举行的由 Salvatore Sanfilippo(Redis 作者)和 Costin Leau(Spring Redis 负责人)主持的网络研讨会

我们期待您在论坛问题跟踪器上提供反馈……

获取 Spring 新闻通讯

通过 Spring 新闻通讯保持联系

订阅

领先一步

VMware 提供培训和认证,助您加速进步。

了解更多

获得支持

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

了解更多

即将举行的活动

查看 Spring 社区所有即将举行的活动。

查看所有