Spring Tool Suite 3.7.1 发布

版本发布 | Martin Lippert | 2015年10月06日 | ...

亲爱的Spring社区,

我很高兴地宣布 Spring Tool Suite(我们基于 Eclipse 的工具)的 3.7.1 版本发布。

此版本的亮点包括

  • 更新至 Eclipse Mars.1 (4.5.1),包括对 JDT 和 m2e 的一些修复
  • 更新至 Pivotal tc Server 3.1.2
  • 对 Spring Boot YML 属性编辑器进行各种改进
  • 对 Spring Boot Starter 向导进行改进
  • 新增对 Spring Boot Devtools 的支持,包括将 Java 调试器附加到 CF 部署应用程序的能力。
  • 新的 Spring Boot Dashboard,目前处于 Beta 阶段,但绝对是此版本的一大亮点

要下载发行版,请访问

在此处可以找到详细的新增和注意事项:STS 3.7.1 新增和注意事项

STS 3.7.2 计划于 2015 年 12 月发布。

祝您使用愉快!

Java EE 7 采用情况简报

新闻 | Juergen Hoeller | 2015年10月06日 | ...

提醒一下:每次有人向您展示包含 Java EE 7 使用情况的调查结果时,尤其是在讨论生产环境使用情况时,请仔细核实他们实际询问的是什么。Hibernate 4.3 的使用是否算作 Java EE 7,仅仅因为它实现了 JPA 2.1(EE 7 级别但可独立运行)?Tomcat 8 的使用是否算作 Java EE 7,仅仅因为它实现了 Servlet 3.1?当然,运行一个包含任何此类独立提供商的 Spring 应用程序是否算作 EE 7?

在看待这类统计数据时,请务必持保留态度:它们通常不会询问“原生 Java EE 7 平台的使用情况”,但最终会以这种方式呈现。为什么可以安全地假设它们没有询问生产环境中对完整 Java EE 7 平台的使用情况?好吧,请回想一下我 六月份的博文,在 2015 年底仍然有效。与此同时,唯一真正的新闻是,自从 IBM 在 WebSphere 的 Liberty Profile 中发布其 EE 7 支持以来,就没有任何消息了。总而言之,此类调查的回复者…

本周 Spring 动态 - 2015 年 9 月 29 日

工程 | Josh Long | 2015 年 9 月 30 日 | ...

欢迎收看又一期的《本周 Spring 动态》!对于那些在美国的读者,请允许我第一个祝您国家咖啡日快乐!和往常一样,我们有很多内容要介绍,所以让我们开始吧!

React.js 和 Spring Data REST:第三部分 - 条件操作

工程 | Greg L. Turnquist | 2015 年 9 月 29 日 | ...
要查看此代码的更新,请访问我们的 React.js 与 Spring Data REST 教程

上一节中,您了解了如何启用 Spring Data REST 的超媒体控件,让 UI 通过分页导航,并根据更改页面大小动态调整。您添加了创建和删除员工以及调整页面的功能。但是,没有一个解决方案能够完全考虑其他用户对您当前正在编辑的同一数据进行的更新。

您可以随时从该存储库获取代码并跟随学习。本节基于上一节的应用,并添加了一些额外内容。

是 PUT 还是不 PUT,这是个问题

当您获取资源时,存在它可能因他人更新而过时的风险。为了解决这个问题,Spring Data REST 集成了两项技术:资源版本控制和 ETags。

通过后端资源版本控制和前端使用 ETags,可以有条件地 PUT 更改。换句话说,您可以检测资源是否已更改,并阻止 PUT(或 PATCH)覆盖他人的更新。让我们来看看。

版本化 REST 资源

为了支持资源版本控制,请为需要此类保护的域对象定义一个版本属性。

src/main/java/com/greglturnquist/payroll/Employee.java
@Data
@Entity
public class Employee {
private @Id @GeneratedValue Long id;
private String firstName;
private String lastName;
private String description;

private @Version @JsonIgnore Long version;

private Employee() {}

public Employee(String firstName, String lastName, String description) {
	this.firstName = firstName;
	this.lastName = lastName;
	this.description = description;
}

}

  • version 字段用 javax.persistence.Version 进行注解。它会导致在每次插入和更新行时自动存储和更新值。

在获取单个资源(非集合资源)时,Spring Data REST 将自动添加一个ETag 响应头,其值为该字段。

获取单个资源及其头部

在上一节中,您使用了集合资源来收集数据并填充 UI 的 HTML 表。在 Spring Data REST 中,_embedded 数据集被视为数据的预览。虽然对于快速查看数据很有用,但要获取 ETag 等头部信息,您需要单独获取每个资源。

在此版本中,loadFromServer 已更新为获取集合,然后使用 URI 来检索每个单独的资源。

src/main/resources/static/app.jsx - 获取每个资源
loadFromServer: function (pageSize) {
    follow(client, root, [
        {rel: 'employees', params: {size: pageSize}}]
    ).then(employeeCollection => {
        return client({
            method: 'GET',
            path: employeeCollection.entity._links.profile.href,
            headers: {'Accept': 'application/schema+json'}
        }).then(schema => {
            this.schema = schema.entity;
            this.links = employeeCollection.entity._links;
            return employeeCollection;
        });
    }).then(employeeCollection => {
        return employeeCollection.entity._embedded.employees.map(employee =>
                client({
                    method: 'GET',
                    path: employee._links.self.href
                })
        );
    }).then(employeePromises => {
        return when.all(employeePromises);
    }).done(employees => {
        this.setState({
            employees: employees,
            attributes: Object.keys(this.schema.properties),
            pageSize: pageSize,
            links: this.links
        });
    });
},
  1. follow() 函数访问 employees 集合资源。
  2. then(employeeCollection ⇒ …​) 子句创建了一个调用来获取 JSON Schema 数据。它有一个子 then 子句来将元数据和导航链接存储在 <App/> 组件中。
    • 请注意,此嵌入式 Promise 返回 employeeCollection。这样,集合就可以传递到下一个调用,同时让您获取元数据。
  3. 第二个 then(employeeCollection ⇒ …​) 子句将员工集合转换为一个 GET Promise 数组,以获取每个单独的资源。这是您为每个员工获取 ETag 头部所需的内容。
  4. then(employeePromises ⇒ …​) 子句获取 GET Promise 数组,并使用 when.all() 将它们合并成一个 Promise,在所有 GET Promise 都解决时解析。
  5. loadFromServer 通过 done(employees ⇒ …​) 结束,其中 UI 状态使用此数据混合进行更新。

此链也在其他地方实现。例如,用于跳转到不同页面的 onNavigate() 已更新为获取单个资源。由于它与上面所示的几乎相同,因此在本节中省略了。

更新现有资源

在本节中,您将添加一个 UpdateDialog React 组件来编辑现有的员工记录。

src/main/resources/static/app.jsx - UpdateDialog 组件
var UpdateDialog = React.createClass({
handleSubmit: function (e) {
    e.preventDefault();
    var updatedEmployee = {};
    this.props.attributes.forEach(attribute =&gt; {
        updatedEmployee[attribute] = React.findDOMNode(this.refs[attribute]).value.trim…

查看新的“使用 Vaadin 创建 CRUD UI”指南

工程 | Greg L. Turnquist | 2015 年 9 月 28 日 | ...

Spring 社区各位好,

今天我们发布了一份新指南:《使用 Vaadin 创建 CRUD UI》。

这份由 Vaadin 团队撰写的指南展示了如何很好地构建一个利用 Spring Data 的 UI,而无需编写一行 JavaScript 或 HTML 代码。

Vaadin 非常酷

  • 附带自己的 Spring Boot starter
  • 与构造函数注入配合良好
  • 使集成 Spring Data 等持久化解决方案变得极其简单
  • 配备了插件库,可以扩展成真正的应用程序

查看这份新出炉的指南,玩得开心!

作为 SpringOne 2GX 的后续,我们确定了一些需要编写的更多指南。云原生故事正在席卷开发社区,人们正在寻求更多解决方案。我们的工作不应该是堆叠服务器或构建基础设施。相反,我们应该专注于顺畅简单的解决方案。将事物进行云原生编码…

本周 Spring - 2015 年 9 月 22 日

工程 | Josh Long | 2015年9月22日 | ...

欢迎收看又一期《本周 Spring》!本周,在经历了精彩绝伦的 SpringOne2GX 2015 之后,坦白说我有点精疲力尽!:D 但 Spring 永不停止,本周我在阿姆斯特丹与我们的朋友 Martin Deinum 一起,帮助一群大型开发者踏上云原生之旅,使用 Spring Boot、Spring Cloud 和 Cloud Foundry。

Spring Integration Java DSL 1.1 GA 已发布

工程 | Artem Bilan | 2015年9月22日 | ...

亲爱的Spring社区!

我谨代表 Spring Integration 团队很高兴地宣布,Spring Integration Java DSL 1.1 GA 版本现已可在 Release RepositoryMaven Central 中获取。

对于 Gradle,请使用此依赖项

'org.springframework.integration:spring-integration-java-dsl:1.1.0.RELEASE'

对于 Maven,请使用此依赖项

<dependency>
     <groupId>org.springframework.integration</groupId>
     <artifactId>spring-integration-java-dsl</artifactId>
     <version>1.1.0.RELEASE</version>
</dependency>

首先,非常感谢上周在 SpringOne 2 GX 2015 上参观我 演讲 的所有人…

Spring for Apache Hadoop 2.3 Milestone 3 发布

版本发布 | Thomas Risberg | 2015年9月22日 | ...

我们很高兴地宣布 Spring for Apache Hadoop 2.3 M3 里程碑版本发布。

此版本最重要的增强功能包括

  • 更新构建以使用 Spring Framework 4.2.1、Boot 1.3.0.M5、Batch 3.0.5 [SHDP-509]
  • 将注解配置移至单独的子项目,以减少 spring-data-hadoop-boot 的依赖 [SHDP-525]
  • 为 Spark Tasklet 添加附加属性 [SHDP-397]
  • 升级构建以使用 Spark 1.5.0 [SHDP-521]

有关详情,请参阅 发布变更日志

我们继续在 Spring IO 里程碑仓库中提供特定版本构件及其各自的传递依赖项

  • 2.3.0.M3 (默认 - Apache Hadoop 稳定版 2.7.1)
  • 2.3.0.M3-hadoop26 (Apache Hadoop 2.6.0)
  • 2.3.0.M3-phd30 (Pivotal HD 3.0)
  • 2.3.0.M3-phd21 (Pivotal HD 2.1)
  • 2.3.0.M3-cdh5 (Cloudera CDH 5.4)
  • 2.3.0.M3-hdp23 (Hortonworks HDP 2.3)

使用 Vaadin Spring 1.0 构建单页 Web 应用程序

工程 | Stéphane Nicoll | 2015 年 9 月 17 日 | ...

这篇博文是社区成员Matti Tahvonen (@MattiTahvonen) 的客座博文,他在Vaadin Ltd 工作,该公司是 Vaadin Framework 的最初开发者,并为其提供商业服务和扩展。

Vaadin 的 Spring 集成库自 5 月份以来一直处于 beta 阶段,并且已被多个生产应用程序使用。今天,我们很高兴地宣布 beta 版本已结束,稳定的 1.0.0 版本已发布。

Vaadin 是一个基于组件的 Web UI 框架,您的应用程序状态和逻辑存在于您的 Java…

获取 Spring 新闻通讯

通过 Spring 新闻通讯保持联系

订阅

领先一步

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

了解更多

获得支持

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

了解更多

即将举行的活动

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

查看所有