Spring Data Graph 1.1.0.RC1 版本发布,支持 Neo4j

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

尊敬的 Spring 社区:

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

Spring Data 项目的主要目标是简化构建使用新数据访问技术(例如非关系型数据库、Map-Reduce 框架和基于云的数据服务)的 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 版本专注于更新对原生 Android 应用程序中最新 Spring Social 版本的支持,以及提供对 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 级别 7)及更高版本。

要获取软件,请下载发行版,或者只需将Maven 工件添加到您的项目中。要查看实时功能,请查看spring-android-showcase(已更新为 1.0.0.M4)。

除了参考指南之外,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 等人谈论 Spring、CloudFoundry 以及更多内容(以及 OSCON Java 和 OSCON Data!)。此外,请随时访问我们的展位,我们将很乐意回答您的问题,向您介绍新技术并与您见面交流。会来吗?请告诉我们,在 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项目附带一个CacheManager实现,它也委托给 GemFire。这个新的 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 社区:

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

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

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

Spring GemFire 1.1.0.M1 for Java 发布

发行版 | Costin Leau | 2011年7月20日 | ...

尊敬的 Spring 社区:

我们很高兴地宣布,Spring GemFire 1.1 项目的第一个里程碑版本现已推出!Spring GemFire 项目旨在简化使用 GemFire 作为分布式数据管理平台构建 Spring 驱动的、高可扩展应用程序。

新的里程碑更新包括:

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

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

立即下载适用于 Java 的 Spring GemFire | 适用于 .NET 的 Spring GemFire

期待您的反馈!

社交编码:拉取请求 - 处理复杂情况时的操作

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

场景:您想为托管在像 github 这样的公共 git 代码库服务上的开源项目贡献一些代码。很多人向我参与的项目发送拉取请求,而且很多时候合并起来比需要的更复杂,这会减慢流程。基本的工作流程在概念上很简单:

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

Keith Donald 的一篇博文中对这个基本工作流程进行了很好的描述:Keith Donald 的博客

当您分叉代码库和发送拉取请求之间主代码库发生了更改时,就会出现问题;(更糟的是)如果您想为不同的特性或错误修复发送多个拉取请求,并且需要将它们分开,以便项目所有者可以单独处理它们。本教程旨在帮助您使用 Git 应对这些复杂情况。

此处的描述使用了 GitHub 的术语(“拉取请求”、“分叉”、“合并”等),但相同的原则也适用于其他公共 Git 服务。在本教程中,我们假设公共项目在其 master 分支上接受拉取请求。大多数 Spring 项目都是这样工作的,但有些其他公共项目并非如此。您可以将下面的“master”替换为正确的分支名称,所有示例都大致正确。

为了帮助您跟踪本地发生的情况,下面以“$”开头的 shell 命令可以提取到一个脚本中,并按出现的顺序运行。最终结果应该是在名为“work”的目录中创建一个本地仓库,该仓库与它的 master 分支(模拟远程公共项目)链接,并在私有分叉上创建两个分支。这两个分支的头部内容相同,但提交历史不同(参见底部的 ASCII 图)。

两个远程仓库

如果您要发送拉取请求,则涉及两个远程仓库:主公共项目和您推送更改的分叉。

在某种程度上,这是一个品味问题,但我喜欢将主项目设为我的工作副本的远程“origin”,并将我的分叉用作名为“fork”的第二个远程仓库。这样可以轻松跟踪主项目中发生的情况,因为我只需要执行以下操作:

# git fetch origin

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

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

这总是让我与主项目保持同步。我可以在从 master 拉取之后,通过执行以下操作来使我的分叉与主项目同步:

# 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)。

此克隆命令中的“fork”URL 将类似于[email protected]/myuserid/repo.git。现在我们将创建分叉。这相当于您请求 GitHub 分叉仓库时 GitHub 执行的操作:

$ 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

并将其与分叉同步:

# git push fork

如果您以这种方式操作,尽可能保持主仓库和您的分叉之间的 master 同步,并且永远不会对 master 分支进行任何本地更改,那么您将永远不会对世界其他地方的情况感到困惑。此外,如果您要向同一个公共项目发送多个拉取请求,如果您将它们保存在自己的分支上(即不在 master 上),则它们不会相互重叠。

拉取请求

当您想开始处理拉取请求时,请从上面完全更新的 master 分支开始,并创建一个新的本地分支:

$ git checkout -b mynewstuff

进行更改,测试等:

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

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

$ git push fork mynewstuff

如果 origin 没有更改,您可以从中发送拉取请求。

如果 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作为直接祖先(它在另一个分支上)。这使得项目所有者难以合并您的更改。您可以通过在本地完成一些工作,并在发送拉取请求之前将其推送到您的分叉来简化此过程。

重写分支上的历史记录

如果您没有与任何人一起在您的分支上协作,那么将分支重新设置到远程仓库的最新更改并强制推送绝对没有问题:

# git checkout mynewstuff
# git rebase master

如果您进行了与远程仓库中发生的一些更改不兼容的更改,则重新设置基准可能会失败。您需要修复冲突并在继续之前提交它们。这会让您感到困难,但会让远程项目所有者轻松,因为拉取请求保证能够成功合并。

在重写历史记录时,您可能希望将一些提交压缩在一起,以便更容易阅读补丁,例如:

# git rebase -i HEAD~2
...

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

# git push --force fork mynewstuff

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

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

您的新分支有一个直接祖先origin/master,所以每个人都很高兴。然后您可以进入 GitHub UI 并针对repo:master发送您的分支的拉取请求。

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

如果您在本地分多个步骤提交了更改,您可能希望保留所有小的提交,并仍然将您的拉取请求作为单个提交呈现给远程仓库。没关系,您可以为此创建一个新分支并从中发送拉取请求。如果您正在与其他人一起在您的功能分支上协作并且不想强制推送,这也是一件好事。

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

$ git checkout mynewstuff
$ git push fork

然后,我们将为压缩的拉取请求创建一个新分支:

$ 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分支上进行协作,您甚至可以在此时将其丢弃。我经常这样做以保持我的分叉整洁:

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

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

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

继续处理您的新内容

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

如果您没有在上面删除它,您可以继续处理您的细粒度分支……

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

然后在准备好时将更改移到拉取请求分支:

$ 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将两个分支切换到我们想要的位置(如果您愿意,您可能可以在图形化 UI 中执行此操作):

$ 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)

如果我们对拉取请求包含 2 个提交感到满意,我们可以按原样推送:

$ git checkout mypullrequest
$ git push fork

端点看起来像这样:

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

或者我们可以重新设置基准以将提交压缩在一起并强制推送,示意图如下:

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

因为origin/masterfork/mypullrequest的直接祖先,我知道我的拉取请求将很容易合并。

总结

希望本教程为您提供了足够的 Git 知识,您可以继续对您最喜欢的开源项目进行更改,并确信合并将很容易。请记住,总有多种方法可以做到这一点,并且 Git 是一种功能强大的低级工具,因此您的里程可能会有所不同,并且您可能会发现上述方法的变体更可取甚至必要,具体取决于您的更改。

Spring Data Redis 1.0.0.M4 发布

发行版 | Costin Leau | 2011年7月18日 | ...

尊敬的 Spring 社区:

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

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

此版本引入了几个新特性,例如:

  • 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 社区中所有即将举行的活动。

查看全部