React.js 与 Spring Data REST:第一部分 - 基本功能

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

Spring 社区的各位,欢迎!

这是几篇博客文章的第一篇。在本期中,您将看到如何快速启动并运行一个最基本的 Spring Data REST 应用程序。然后,您将使用 Facebook 的 React.js 工具集在其之上构建一个简单的 UI。

第 0 步 - 设置您的环境

您可以随时从该存储库 获取代码 并进行学习。

如果您想自己动手,请访问 http://start.spring.io 并选择以下选项

  • Rest Repositories
  • Thymeleaf
  • JPA
  • H2

此演示使用 Java 8、Maven 项目和最新稳定的 Spring Boot 版本。这将为您提供一个干净的空白项目。之后,您可以添加本期中明确显示到的各种文件,和/或从上面列出的存储库中借用。

起初……

起初,有数据。一切都很好。但随后人们希望通过各种方式访问数据。多年来,人们拼凑了许多 MVC 控制器,其中许多使用了 Spring 强大的 REST 支持。但一遍又一遍地重复会耗费大量时间。

Spring Data REST 解决了在做了一些假设的情况下,这个问题可以变得多么简单

  • 开发人员使用支持存储库模型的 Spring Data 项目。
  • 系统使用公认的、行业标准的协议,如 HTTP 动词、标准化的媒体类型和 IANA 批准的链接名称。

声明您的域

任何基于 Spring Data 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 Employee() {}

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

}

  • @Entity 是一个 JPA 注解,它表示整个类将存储在关系表中。
  • @Id@GeneratedValue 是 JPA 注解,用于表示主键,并在需要时自动生成。
  • @Data@RequiredArgsConstructor 是 Project Lombok 注解,用于自动生成 getter、setter、构造函数、toString、hash、equals 等。它减少了样板代码。

此实体用于跟踪员工信息。在这种情况下,是他们的姓名和工作描述。

注意
Spring Data REST 不限于 JPA。它支持许多 NoSQL 数据存储,但在这里我们不会介绍它们。

定义存储库

Spring Data REST 应用程序的另一个关键部分是创建相应的存储库定义。

src/main/java/com/greglturnquist/payroll/EmployeeRepository.java
public interface EmployeeRepository extends CrudRepository<Employee, Long> {

}

  • 存储库扩展了 Spring Data Commons 的 CrudRepository,并注入了域对象的类型及其主键。

仅此而已!事实上,如果它是顶级的且可见的,您甚至不必注解它。如果您使用 IDE 并打开 CrudRepository,您会发现其中已经定义了大量预构建的方法。

注意
您可以根据需要 定义自己的存储库。Spring Data REST 也支持这一点。

预加载演示

要使用此应用程序,您需要预先加载一些数据,如下所示

src/main/java/com/greglturnquist/payroll/DatabaseLoader.java
@Component
public class DatabaseLoader implements CommandLineRunner {
private final EmployeeRepository repository;

@Autowired
public DatabaseLoader(EmployeeRepository repository) {
	this.repository = repository;
}

@Override
public void run(String... strings) throws Exception {
	this.repository.save(new Employee("Frodo", "Baggins…

Spring Statemachine 1.0.0.RC1 发布

发布 | Janne Valkealahti | 2015 年 9 月 1 日 | ...

我们很高兴地宣布 Spring Statemachine 1.0.0.RC1 的首个候选版本发布。

此版本的重点是提高核心框架的稳定性,并最终为分布式状态机添加 jepsen 测试。我们还添加了测试支持的第一个版本。已解决的 GitHub 问题可以在 RC1 issues 中找到。我们已接近发布版本,这意味着如果没有重大问题出现,下一个版本将是 1.0.0.RELEASE。如果出现紧急问题,我们将在发布前发布 1.0.0.RC2

现在我们已经到了这一步,让我们开始看看这个版本有什么新功能。

超越……

Spring Data 发布系列 Gosling 正式发布

发布 | Oliver Drotbohm | 2015 年 9 月 1 日 | ...

我谨代表 Spring Data 团队宣布 Spring Data 发布系列 Gosling 正式发布。在过去的 6 个月里,我们总共修复了 344 个问题,其中 56 个在最新的发布候选版之后修复

  • 将 Spring 基线升级到 4.1。
  • 更容易实现自定义存储库代码(每个存储库,请参阅参考文档)。
  • 提高了与 Hibernate 5 (JPA 模块) 的兼容性。
  • MongoDB 的 @Query 方法支持 SpEl(请参阅此示例)。
  • 支持从 Web 请求创建 Querydsl Predicates(请参阅参考文档)。
  • 一个新的 Spring Data KeyValue 模块,用于支持 Map 后备存储库,并使用 SpEL 作为查询语言。
  • 改进了 Spring Data REST 中 HAL 浏览器的 POST 表单。
  • 支持 Spring Data REST 中枚举值和链接标题的国际化。

本周 Spring - 2015 年 9 月 1 日

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

欢迎来到又一期《本周 Spring》!Spring 团队正全力以赴地准备 SpringOne2GX 大会!时间过得真快!我简直不敢相信我们已经要迎来九月了!本周我正在日本东京,参加 Spring 用户组的大型Spring in Summer活动,并在会上做了主题演讲以及关于 Spring Boot 和 Spring Cloud 的两个演讲。这个为期一天的活动吸引了一些公司最大的网站,非常有趣!

好了,言归正传!

Spring Framework 4.2.1 现已发布

发布 | Stéphane Nicoll | 2015 年 9 月 1 日 | ...

我很高兴地宣布 Spring Framework 4.2.1 现已在 repo.spring.io 和 Maven Central 上可用。这是 4.2 系列的第一个维护版本,其中包含了针对 4.2 GA 版本中报告的 各种回归和其他问题的广泛修复

4.2.1 还包含一些小的增强功能:改进了 Jackson 支持(请参阅 Sébastien 的更新博客文章),元注解处理得到改进(@AliasFor),第三方依赖项得到统一(包括 Hibernate 5.0 GA)。

我们强烈建议所有 4.x 用户立即升级到 4.2.1。Spring Framework 团队目前正致力于……

本周 Spring - 2015 年 8 月 25 日

工程 | Josh Long | 2015 年 8 月 25 日 | ...

欢迎来到又一期《本周 Spring》!本周我在巴西里约热内卢参加了非常棒的 QCon Rio 会议,然后我将前往日本东京参加一个Spring in Summer大会,与当地的 Spring 用户见面!

团队正忙碌于今年的 SpringOne2GX 2016,这是有史以来最大、最棒的 SpringOne2GX!今年,您将看到我们用更少的资源做更多的事情,并且能成功部署到生产环境!这对我们每个人来说都很令人兴奋,对听众来说也是如此!

Spring for Apache Hadoop 2.3 Milestone 2 发布

版本发布 | Thomas Risberg | 2015年8月20日 | ...

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

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

  • 新的批处理任务:支持运行简单的 Spark 应用 [SHDP-397] 和运行简单的 Sqoop2 作业 [SHDP-506]
  • 更好的 Boot 支持:为 Boot 配置向 SpringHadoopProperties 添加 jobHistoryAddress [SHDP-517]
  • YARN:支持 YARN 容器组名称中的点 [SHDP-515]

有关详细信息,请参阅 版本更改日志

新增的通过 Spring Batch tasklet 在 YARN 上运行 Spark 作业的功能,为将 Spark 任务集成到更大的 Spring Batch 流程中打开了可能性。我们将在即将举行的 SpringOne 2GX 会议上,通过我们的 “使用 Spring 技术进行 Hadoop 工作流和分布式 YARN 应用” 演示一个简单的例子……

将Spring Web MVC应用程序从JSP迁移到AngularJS

工程 | Michael Isvy | 2015年8月19日 | ...

作者注

此文由Han LimTony Nguyen特邀撰写。Han和Tony在新加坡Spring用户组上就Spring + Angular JS做了一次精彩的演讲。此博客基于他们的演讲内容。

摘要

在本文中,我们将尝试描述我们从JSP、Struts和Velocity等服务器端渲染视图技术迁移到使用AngularJS(一个流行的现代浏览器JavaScript框架)的客户端渲染视图技术的经验。我们将讨论在进行此更改时需要注意的一些事项以及可能遇到的潜在陷阱。如果…

获取 Spring 新闻通讯

通过 Spring 新闻通讯保持联系

订阅

领先一步

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

了解更多

获得支持

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

了解更多

即将举行的活动

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

查看所有